140 likes | 225 Views
第 3 章 小结( 2 ). 指令系统. 1. 指令系统的特点. 8086/8088 的指令系统完全相同,都能在 x86 系列 CPU 上运行 指令的特点体现在:格式上、功能上和寻址方式 可变长指令,如 CISC 指令 1 ~ 8 字节 寻址方式多样灵活,处理数据能力强 有重复指令和运算指令,扩充了条件指令、移位 / 循环指令 为加强软件中断功能和支持多处理器相同的工作,增设了有关的指令,如 test , wait 等. 2. 指令的格式. 无操作数 单操作数 在 R 中 在 MM 中 双操作数 都在 R 中 一个在 R ,一个在 MM 中
E N D
第3章 小结(2) 指令系统 长江大学
1.指令系统的特点 • 8086/8088的指令系统完全相同,都能在x86系列CPU上运行 • 指令的特点体现在:格式上、功能上和寻址方式 可变长指令,如CISC指令1~8字节 寻址方式多样灵活,处理数据能力强 有重复指令和运算指令,扩充了条件指令、移位/循环指令 为加强软件中断功能和支持多处理器相同的工作,增设了有关的指令,如test,wait等 长江大学
2. 指令的格式 • 无操作数 • 单操作数 • 在R中 • 在MM中 • 双操作数 • 都在R中 • 一个在R,一个在MM中 • 一个在R,另一个是立即数 • 一个在MM,另一个是立即数 长江大学
3. 寻址方式 • 固定寻址 • 立即数寻址 • 寄存器寻址 • 存储器寻址 • 存储器直接寻址 • 存储器间接寻址 • 基址寻址 • 变址寻址 • 基址加变址寻址 • 基址加变址加偏移量 长江大学
其他寻址方式 • I/O端口寻址 • 直接寻址0~255 • 间接寻址通过DX • 转移类指令的寻址方式 • 条件转移:段内转移 -128~+127 • 无条件转移和调用指令 • 段内短转移IP IP+8 位位移量(-128~+127) • 段内直接转移JMP 1000H • 段间直接转移JMP 2500H:3600H • 段间间接转移JMP DWORD PTR[DI] 长江大学
4. 8086/8088指令的分类 • 数据传送类指令: • 通用数据传送:MOV,PUSH,POP,XCHG,XLAT(代码转换) • 目标地址传送类:LEA,LDS,LES • 标志位传送:LAHF,SAHF,PUSHF,POPF • I/O传送:IN,OUT 长江大学
算术运算类: • 加法:ADD,ADC,INC • 减法:SUB,SBB,DEC,NEG,CMP • 乘法:MUL,IMUL • 除法:DIV,IDIV • 扩展指令:CBW,CWD • ASCII码和十进制调整指令: • AAA,AAS,AAM,AAD • DAA,DAS • 逻辑运算和移位循环指令: • 逻辑运算:AND,OR,XOR,NOT,TEST • 移位:SAL,SHL,SAR,SHR • 循环:ROL,ROR,RCL,RCR 长江大学
串操作指令 • 字节串/字串传送:MOVSB/MOVSW • 字节串/字串:CMPSB/CMPSW • 字节串/字串搜索:SCASB/SCASW • 重复前缀:REP(无条件重复),REPE/REPZ(ZF=1重复),REPNE/REPNZ(ZF=0重复) • 程序控制指令 • 无条件转移:JPM 目标标号 • 条件转移(无符号) • JA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC/JNC,JE/JZ,JNE/JNZ • 条件转移(带符号) • JG/JNLE,JGE/JNL,JL/JNGE,JLE/JNG,JO/JNO • JS/JNS 长江大学
程序控制指令(续) • 循环控制: • LOOP 目标标号 • LOOPE/LOOPZ,LOOPNE/LOOPNZ • JCXZ (CX=0转移) • 中断: • INT 中断类型,INTO,IRET • 处理器控制指令 • 对标志位操作:CLC,STC,CLD,STD,CLI,STI • 同步控制:WAIT,LOCK • 其它:HLT,NOP 长江大学
如何掌握指令系统 • 从4个方面入手:助记符、指令功能、寻址方式、对标志位的影响 • 指令可处理8/16位操作数,注意使用BYTE PTR • 8088的条件转移指令都是段内转移,分3类: • 单个标志控制的转移 • 对无符号数判断大小的转移 JA,JB • 对带符号数判断大小的转移 JG,JL 对于转移和调用指令: • 段内转移和调用:只提供16位的偏移量 • 段间转移和调用:提供32位的目标地址 长江大学
指令对操作数的特殊约定或限制 所有十进制调整指令都对AL的内容 所有I/O指令涉及的寄存器为AL,AX和DX 所有乘法指令的乘积存放于:AX(8位乘法)或AX和DX(16位乘法) 所有除法指令的被除数存放在AX或AX和DX;商存放于:AL或AX;余数在AH或DX中 所有串操作指令中源串由DS:SI寻址;目的串由ES:DI寻址;重复次数放于CX中 对移位和循环指令:当移位次数多于1时,存放CL;循环次数存放于CX中 长江大学
练习:指出下列指令哪些是错误的,指出错误原因:练习:指出下列指令哪些是错误的,指出错误原因: MOV BL,AX MOV 100,CX MOV [SI],AX MOV CS,AX MOV [SI],BUFFER OUT 541H,AL IN BL,DX LEA BX,AX 长江大学
MOV BX,2[DI] XCHG AL,100 MOV BYTE PTR[BX],10000 MOV AX,[BP+3] MOV AX,CS MOV SS,2400H SHL AX,CX SHL AX,CL SHL AX,5 ROL AX,CX 长江大学
谢谢! 本章作业: 长江大学