《2022年指令系统》由会员分享,可在线阅读,更多相关《2022年指令系统(18页珍藏版)》请在金锄头文库上搜索。
1、1. 通用数据传送指令MOV (Move)传送PUSH (Pushontothe stack )进栈POP (Popfromthe stack )出栈XCHG (Exchange)交换.MOV 指令格式为: MOV DST,SRC执行的操作 :(DST)-(SRC).PUSH 进栈指令格式为 :PUSH SRC执行的操作 :(SP)-(SP)-2(SP)+1,(SP)-(SRC).POP 出栈指令格式为 :POP DST执行的操作 :(DST)-(SP+1),(SP)(SP)-(SP)+2.XCHG交换指令格式为 :XCHG OPR1,OPR2执行的操作 :(OPR1)(OPR2)2. 累加器
2、专用传送指令IN(Input)输入OUT(Output)输出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - XLAT(Translate)换码这组指令只限于使用累加器AX 或 AL 传送信息.IN 输入指令长格式为: IN AL,PORT(字节)IN AX,PORT(字)执行的操作: (AL)-(PORT)(字节)(AX)-(PORT+1,PORT)( 字)短格式为: IN AL,DX( 字节)IN AX, DX(字)执行的操
3、作: AL-(DX)(字节)AX-(DX)+1,DX)(字).OUT输出指令长格式为: OUT PORT,AL(字节)OUT PORT,AX(字)执行的操作: (PORT)-(AL)(字节)(PORT+1,PORT)-(AX)( 字)短格式为: OUT DX,AL( 字节)OUT DX,AX(字)执行的操作: (DX)-(AL)(字节)(DX)+1,(DX)=256时, 只能使用短格式, 此时 , 必须先把端口号放到DX 寄存器中 ( 端口号可以从0000到0FFFFH), 然后再用IN 或 OUT 指令来传送信息.XLAT 换码指令格式为: XLAT OPR或:XLAT执行的操作 :(AL)
4、-(BX)+(AL)3. 有效地址送寄存器指令LEA(Loadeffectiveaddress) 有效地址送寄存器LDS(LoadDS withPointer)指针送寄存器和 DSLES(Load ESwithPointer)指针送寄存器和 ES.LEA 有效地址送寄存器格式为: LEA REG,SRC执行的操作 :(REG)-SRC指令把源操作数的有效地址送到指定的寄存器中.LDS 指针送寄存器和DS 指令格式为: LDS REG,SRC执行的操作 :(REG)-(SRC)(DS)-(SRC+2)把源操作数指定的4个相继字节送到由指令指定的寄存器及DS 寄存器中 . 该指令常指定 SI 寄存
5、器.名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - .LES 指针送寄存器和ES 指令格式为: LES REG,SRC执行的操作: (REG)-(SRC)(ES)-(SRC+2)把源操作数指定的4个相继字节送到由指令指定的寄存器及ES 寄存器中 . 该指令常指定 DI 寄存器.4. 标志寄存器传送指令LAHF(LoadAH withflags)标志送AHSAHF(storeAH intoflags)AH送标志寄存器PUSHF(
6、pushthe flags)标志进栈POPF(popthe flags)标志出栈.LAHF标志送 AH格式为: LAHF执行的操作 :(AH)-(PWS的低字节).SAHF AH 送标志寄存器格式为: SAHF执行的操作 :(PWS 的低字节 )-(AH).PUSHF 标志进栈格式为: PUSHF执行的操作 :(SP)-(SP)-2(SP)+1,(SP)-(PSW).POPF 标志出栈名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - -
7、 - 格式为: POPF执行的操作 :(PWS)-(SP)+1,(SP)(SP)-(SP+2)二、算术指令1. 加法指令ADD(add)加法ADC(addwith carry)带进位加法INC(increment)加1.ADD加法指令格式: ADD DST,SRC执行的操作 :(DST)-(SRC)+(DST).ADC带进位加法指令格式: ADC DST,SRC执行的操作 :(DST)-(SRC)+(DST)+CF.ADD加1指令格式: INC OPR执行的操作 :(OPR)-(OPR)+12. 减法指令SUB(subtract)减法SBB(subtractwithborrow) 带借位减法D
8、EC(Decrement) 减1NEG(Negate) 求补名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - CMP(Compare)比较.SUB 减法指令格式: SUB DST,SRC执行的操作 :(DST)-(DST)-(SRC).SBB 带借位减法指令格式: SBB DST,SRC执行的操作 :(DST)-(DST)-(SRC)-CF.DEC 减1指令格式: DEC OPR执行的操作 :(OPR)-(OPR)-1.NEG
9、求补指令格式: NEG OPR执行的操作 :(OPR)- -(OPR).CMP比较指令格式: CMP OPR1,OPR2执行的操作 :(OPR1)-(OPR2)该指令与 SUB 指令一样执行减法操作, 但不保存结果, 只是根据结果设置条件标志西半球.3. 乘法指令MUL(UnsignedMultiple)无符号数乘法IMUL(SignedMultiple)带符号数乘法.MUL无符号数乘法指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - -
10、- - - 格式: MUL SRC执行的操作:字节操作数 :(AX)-(AL)*(SRC)字操作数 :(DX,AX)-(AX)*(SRC).IMUL带符号数乘法指令格式: IMUL SRC执行的操作 : 与MUL 相同 , 但必须是带符号数, 而 MUL 是无符号数.4. 除法指令DIV(Unsigneddivide)无符号数除法IDIV(Signeddivide)带符号数除法CBW(Convertbyte to word) 字节转换为字CWD(Contertwordto doubleword) 字转换为双字.DIV无符号数除法指令格式: DIV SRC执行的操作:字节操作 :(AL)-(AX
11、)/(SRC)的商(AH)-(AX)/(SRC)的余数字操作: (AX)-(DX,AX)/(SRC)的商(AX)-(DX,AX)/(SRC)的余数.IDIV带符号数除法指令格式:DIV SRC执行的操作 : 与DIV 相同 , 但操作数必须是带符号数, 商和余数也均为带符号数, 且名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 余数的符号与被除数的符号相同.CBW 字节转换为字指令格式: CBW执行的操作 :AL的内容符号扩展
12、到AH.即如果 (AL) 的最高有效位为0, 则(AH)=00;如(AL) 的最高有效位为1, 则(AH)=0FFH.CWD字转换为双字指令格式: CWD执行的操作 :AX 的内容符号扩展到DX.即如 (AX) 的最高有效位为0, 则(DX)=0; 否则(DX)=0FFFFH.这两条指令都不影响条件码.三、逻辑指令1. 逻辑运算指令AND(and)逻辑与OR(or)逻辑或NOT(not)逻辑非XOR(exclusiveor) 异或TEST(test)测试.AND逻辑与指令格式: AND DST,SRC执行的操作 :(DST)-(DST)(SRC).OR 逻辑或指令格式: OR DST,SRC名
13、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - 执行的操作 :(DST)-(DST)V(SRC).NOT逻辑非指令格式: NOT OPR执行的操作 :(OPR)-(OPR).XOR 异或指令格式: XOR DST,SRC执行的操作 :(DST)-(DST)V(SRC).TEST 测试指令格式: TEST OPR1,OPR2执行的操作 :(DST)(SRC)两个操作数相与的结果不保存, 只根据其特征置条件码2. 移位指令SHL(s
14、hiftlogicalleft)逻辑左移SAL(shiftarithmeticleft)算术左移SHR(shiftlogicalright)逻 辑 右 移SAR(shiftarithmeticright)算 术 右 移ROL(Rotateleft)循环左移ROR(Rotateright)循环右移RCL(Rotateleft throughcarry)带进位循环左移RCR(Rotaterightthroughcarry)带进位循环右移格式:SHL OPR,CNT( 其余的类似)其中 OPR 可以是除立即数以外的任何寻址方式. 移位次数由 CNT 决定 ,CNT 可以是 1或 CL.名师资料总结
15、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - 循环移位指令可以改变操作数中所有位的位置; 移位指令则常常用来做乘以2除以2操作 . 其中算术移位指令适用于带符号数运算,SAL 用来乘 2,SAR 用来除以 2;而逻辑移位指令则用来无符号数运算,SHL 用来乘 2,SHR 用来除以 2. 四、 串处理指令1. 与 REP 相配 合工 作的 MOVS,STOS和 LODS 指令.REP 重复 串操 作直 到(CX)=0 为上格式: REP s
16、tringprimitive其中 StringPrimitive可为 MOVS,LODS或 STOS指令执行的操作:1) 如(CX)=0 则退出 REP,否则往下执行.2)(CX)-(CX)-13) 执行其中的串操作4) 重复 1)3).MOVS串传送指令格式 : 可有三种 MOVS DST,SRCMOVSB( 字节)MOVSW( 字)其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:MOVS ES:BYTE PTRDI,DS:SI执行的操作:1)(DI)-(SI)2) 字节操作:(SI)-(SI)+(或-)1,(DI)-(DI)+(或-)1当方向
17、标志DF=0时用 +, 当方向标志DF=1时用-名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - 3) 字操作:(SI)-(SI)+(或-)2,(DI)-(DI)+(或-)2当方向标志DF=0时用 +, 当方向标志DF=1时用-该指令不影响条件码.CLD(Cleardirectionflag)该指令使 DF=0,在执行串操作指令时可使地址自动增量;.STD(Set directionflag)该指令使 DF=1,在执行串操作指
18、令时可使地址自动减量.STOS 存入串指令格式: STOS DST STOSB( 字节)STOSW( 字)执行的操作:字节操作 :(DI)-(AL),(DI)-(DI)+-1字操作: (DI)-(AX),(DI)-(DI)+-2该指令把 AL 或 AX 的内容存入由(DI) 指定的附加段的某单元中, 并根据 DF 的值及数据类型修改DI 的内容 , 当它与 REP 联用时 , 可把 AL 或 AX 的内容存入一个长度为 (CX) 的缓冲区中.LODS 从串取指令格式: LODS SRC LODSBLODSW执行的操作:字节操作 :(AL)-(SI),(SI)-(SI)+-1字操作: (AX)-
19、(SI),(SI)-(SI)+-2该指令把由 (SI) 指定的数据段中某单元的内容送到AL 或 AX 中, 并根据方向标志及数据类型修改SI 的内容 . 指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.一般说来 , 该指令不和 REP联用 . 有时缓冲区中的一串字符需要逐次取出来测试时, 可使用本指令.2. 与REPE/REPZ 和 REPNZ/REPNE联合工作的 CMPS 和 SCAS 指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页
20、 - - - - - - - - - .REPE/REPZ 当相等 / 为零时重复串操作格式: REPE( 或 REPZ) StringPrimitive其中 StringPrimitive可为 CMPS 或SCAS 指令.执行的操作:1) 如(CX)=0 或 ZF=0(即某次比较的结果两个操作数不等) 时退出 , 否则往下执行2)(CX)-(CX)-13) 执行其后的串指令4) 重复 1)3).REPNE/REPNZ当不相等 / 不为零时重复串操作格式: REPNE( 或REPNZ) StringPrimitive其中 StringPrimitive可为 CMPS或 SCAS 指令执行的操作
21、:除退出条件 (CX=0) 或 ZF=1外, 其他操作与REPE 完全相同.CMPS串比较指令格式: CMP SRC,DST CMPSBCMPSW执行的操作:1)(SI)-(DI)2)字节操作:(SI)-(SI)+-1,(DI)-(DI)+-1字操作:(SI)-(SI)+-2,(DI)-(DI)+-2指令把由 (SI) 指向的数据段中的一个字( 或字节 ) 与由 (DI) 指向的附加段中的一个字( 或字 节) 相减 , 但不 保存结 果, 只根 据结果 设置条 件码 , 指令 的其它 特性 和MOVS 指令的规定相同. .SCAS 串扫描指令格式: SCAS DST SCASBSCASW执行的
22、操作:字节操作 :(AL)-(DI),(DI)-(DI)+-1名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - 字操作: (AL)-(DI),(DI)-(DI)+-2该指令把 AL(或 AX)的内容与由 (DI) 指定的在附加段中的一个字节( 或字 ) 进行比较, 并不保存结果, 只根据结果置条件码. 指令的其他特性和MOVS 的规定相同.五、控制转移指令1. 无条件转移指令.JMP(jmp)跳转指令1) 段内直接短转移格式
23、:JMP SHORT OPR 执行的操作 :(IP)-(IP)+8位位移量2) 段内直接近转移格式 :JMP NEAR PTR OPR 执行的操作 :(IP)-(IP)+16位位移量3) 段内间接转移格式 :JMP WORD PTR OPR 执行的操作 :(IP)-(EA)4) 段间直接 ( 远) 转移格式 :JMP FAR PTR OPR 执行的操作 :(IP)-OPR 的段内偏移地址(CS)-OPR所在段的段地址5) 段间间接转移格式 :JMP DWORDPTR OPR执行的操作 :(IP)-(EA)(CS)-(EA+2)2. 条件转移指令1) 根据单个条件标志的设置情况转移.JZ( 或J
24、E)(Jump if zero,orequal)结果为零 ( 或相等 ) 则转移格式 :JE( 或JZ) OPR测试条件 :ZF=1 .JNZ( 或 JNE)(Jumpif not zero,ornot equal)结果不为零 ( 或不相等 ) 则转移格式 :JNZ( 或 JNE) OPR测试条件 :ZF=0.JS(Jumpif sign)结果为负则转移格式:JS OPR测试条件 :SF=1 .JNS(Jumpif notsign)结果为正则转移格式:JNSOPR测试条件 :SF=0 .JO(Jumpif overflow)溢出则转移格式:JO OPR名师资料总结 - - -精品资料欢迎下载
25、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - 测试条件 :OF=1.JNO(Jumpif not overflow)不溢出则转移格式:JNO OPR测试条件 :OF=0 .JP( 或JPE)(Jump if parity,orparityeven)奇偶位为 1则转移格式: JP OPR测试条件 :PF=1.JNP( 或 JPO)(Jumpif not parity,orparityodd)奇偶位为 0则转移格式: JNP(或 JPO) OPR测 试 条 件 :PF
26、=0 .JB( 或JNAE,JC)(Jumpif below,ornotaboveor equal,orcarry)低于 , 或者不高于或等于, 或进位位为 1则转移格式 :JB( 或JNAE,JC) OPR测试条件 :CF=1.JNB( 或 JAE,JNC)(Jumpif not below,oraboveor equal,ornotcarry)不低于, 或者高于或者等于, 或进位位为 0则转移格式 :JNB( 或 JAE,JNC) OPR测试条件 :CF=02) 比较两个无符号数, 并根据比较的结果转移.JB( 或JNAE,JC)格式 : 同上.JNB( 或 JAE,JNC)格式 : 同上
27、.JBE( 或JNA)(Jumpif belowor equal,ornot above)低于或等于 , 或不高于则转移格式 :JBE( 或JNA) OPR测试条件 :CFVZF=1.JNBE( 或 JA)(Jumpif not belowor equal,orabove)不名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - 低于或等于 , 或者高于则转移格式:JNBE( 或 JA) OPR测试条件 :CFVZF=0 3) 比较
28、两个带符号数, 并根据比较的结果转移.JL( 或LNGE)(Jumpif less,or notgreateror equal)小于 , 或者不大于或者等于则转移格式:JL( 或 JNGE) OPR测试条件 :SFVOF=1 .JNL( 或 JGE)(Jump if not less,orgreateror equal) 不小于, 或者大于或者等于则转移格式:JNL( 或 JGE) OPR测试条件 :SFVOF=0 .JLE( 或 JNG)(Jumpif less or equal,ornot greater)小于或等于 , 或者不大于则转移格式:JLE( 或JNG) OPR测试条件 :(SF
29、VOF)VZF=1.JNLE( 或 JG)(Jump if not less or equal,orgreater)不小于或等于, 或者大于则转移格式:JNLE( 或 JG) OPR测试条件 :(SFVOF)VZF=04) 测试 CX 的值为 0则转移指令.JCXZ(Jumpif CX registeris zero) CX 寄存器的内容为零则转移格式:JCXZOPR测试条件 :(CX)=0注: 条件转移全为8位短跳!3. 循环指令.LOOP 循环指令格式: LOOP OPR测试条件 :(CX)0.LOOPZ/LOOPE当为零或相等时循环指令格式: LOOPZ( 或LOOPE) OPR测试条件
30、 :(CX)0 且 ZF=1 .LOOPNZ/LOOPNE当不为零或不相等时循环指令格式: LOOPNZ( 或LOOPNE)OPR测试条件 :(CX)0 且 ZF=0这三条指令的步骤是:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - 1)(CX)-(CX)-12) 检查是否满足测试条件, 如满足则 (IP)-(IP)+D8的符号扩充.4. 子程序.CALL 调用指令.RET 返回指令5. 中断.INT 指令格式: INT T
31、YPE或 INT执行的操作 :(SP)-(SP)-2(SP)+1,(SP)-(PSW)(SP)-(SP)-2(SP)+1,(SP)-(CS)(SP)-(SP)-2(SP)+1,(SP)-(IP)(IP)-(TYPE*4)(CS)-(TYPE*4+2).INTO若溢出则中断执行的操作 : 若OF=1 则: (SP)-(SP)-2(SP)+1,(SP)-(PSW)(SP)-(SP)-2(SP)+1,(SP)-(CS)(SP)-(SP)-2(SP)+1,(SP)-(IP)(IP)-(10H)(CS)-(12H).IRET 从中断返回指令格式:IRET名师资料总结 - - -精品资料欢迎下载 - -
32、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - 执行的操作 :(IP)-(SP)+1,(SP)(SP)-(SP)+2(CS)-(SP)+1,(SP)(SP)-(SP)+2(PSW)-(SP)+1,(SP)(SP)-(SP)+2六、处理机控制指令1. 标志处理指令.CLC 进位位置 0指令 (Clear carry)CF-0.CMC 进位位求反指令(Complementcarry)CF-CF.STC进位位置 1指令 (Setcarry)CF-1.CLD 方向标志置 0指令 (
33、Clear direction)DF-0.STD 方向标志置 1指令 (Set direction)DF-1.CLI 中 断 标 志 置 0指 令 (Clearinterrupt)IF-0.STI 中 断 标 志 置 1 指 令 (Setinterrupt)IF-02. 其他处理机控制指令NOP(NoOpreation)无操作HLT(Halt)停机WAIT(Wait)等待 ESC(Escape)换码 LOCK(Lock)封锁这些指令可以控制处理机状态. 这们都不影响条件码.NOP无操作指令该指令不执行任何操作, 其机器码占有一个字节, 在调试程序时往往用这条指令占有一定的存储单元, 以便在正式
34、运行时用其他指令取代.HLT 停机指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - 该指令可使机器暂停工作, 使处理机处于停机状态以便等待一次外部中断到来,中断结束后可继续执行下面的程序.WAIT 等待指令该指令使处理机处于空转状态, 它也可以用来等待外部中断的发生,但中断结束后仍返回 WAIT 指令继续德行.ESC 换码指令格式 ESCmem其中 mem 指出一个存储单元,ESC指令把该存储单元的内容送到数据总线去. 当
35、然 ESC指令不允许使用立即数和寄存器寻址方式. 这条指令在使用协处理机(Coprocessor)执行某些操作时, 可从存储器指得指令或操作数. 协处理机 ( 如8087) 则是为了提高速度而可以选配的硬件.LOCK 封锁指令该指令是一种前缀, 它可与其他指令联合, 用来维持总线的锁存信号直到与其联合的指令执行完为止. 当CPU 与其他处理机协同工作时, 该指令可避免破坏有用信息.名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -