




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通用寄存器: 数据寄存器:累加器AX,基址寄存器BX,计数器CX,数据寄存器DX 变址寄存器:源地址寄存器SI,目的变址寄存器DI 指针寄存器:基址指针BP,堆栈指针SP段寄存器: 代码段寄存器CS,堆栈段寄存器SS,数据段寄存器DS,附加段寄存器ES 标志寄存器:FLAGS,指令指针:IP数据寄存器8086有4个16位数据寄存器:AX,BX,CX,DX;它们都可以分为两个独立的8位寄存器:AH/AL,BH/BL,CH/CL,DH/DL;对其中的某8位操作,并不影响另外对应8 位寄存器的数据.数据寄存器是通用的,用来存放计算结果和操作数, 但每个寄存器又有它们各自专用目的,主要是:AX称为累加器,使用程度最高,用于算术,逻辑运算及与外设传送信息等;BX称为基地址寄存器,常用做存放存储器的地址;CX称为计数器,作为循环和串操作等指今中隐含的计数器;DX称为数据寄存器,常用来存放双字节长数据的高16位,或存放外设端口地址.指针及变址寄存器指针及变址寄存器包括SI,DI,BP,SP四个16位寄存器,常用于存储器寻址时提供地址.SI源变址寄存器,DI目的变址寄存器,一般与DS联用确定数据段中某一存储单元地址.SP堆栈指针寄存器,指示栈顶的偏移地址;BP基址指针寄存器, 表示堆栈段中的基地址.IP16位指令指针寄存器,指示代码段中指令的偏移地址,它与代码段寄存器CS 联用,以确定下一条指令的物理地址.处理器利用CS:IP取得下一条要执行的指令,然后修改IP的内容,使之指向下一条指令的存储器地址.标志寄存器(FLAGS) 也称为状志标志寄存器PSW0 CF(Carry Flag) 进位标志12 PF(Parity Flag)零标志34 AF(Auxiliary Carry Flag)辅助进位标志56 ZF(Zero Flag)零标志7 SF(Sign Flag)符号标志:运算结果最高有效位的状态就是符号位的状态.8 TF(Trap Flag)陷井标志9 IF(Interrupt-enable Flag)中断允许标志10 DF(Direction Flag)方向标志11 OF(Overflow Flag)溢出标志12131415状态标志:CF,ZF,SF,PF,OF,AF控制标志:DF,IF,TF8086的字长是16位的,但其地址线是32位的.8086处理器将1M存储器空间分成许多逻辑段(Segment),每个段的最大限为16KB. 这样,每个存储单元就可以用段地址:段内偏移地址表达其准确的物理位置.段地址:偏移地址的形式称为 逻辑地址 .将逻辑地址中的段地址左移4位(这是对二进制而言,若是十六进制,只要左移一位),加上偏移地址就得到20位物理地址. 例如逻辑地址1460H:100H表示物理地址14700H, 同一个物理地址可以有多个逻辑地址形式.8位通用寄存器AH/AL/BH/BL/CH/CL/DH/DL16位的通用寄存器AX/BX/CX/DX.DST 目的操作数SRC 源操作数一. 通用数据传送指令1. 传送指令 MOV (move)格式:MOV DST,SRC操作:(DST)(SRC) 将原操作数(字节或字)传送到目的地址。操作数要求:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。对标志位的影响:不影响标志位。指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;不能同时为存储器操作数,源操作数SRC立即数方式,目的操作数DST不能是段寄存器,IP.CS不能作为目标操作数。2. 进栈指令 PUSH (push onto the stack) 出栈指令 POP (pop from the stack)格式:PUSH SRC;POP DST操作:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。 PUSH SRC (SP)(SP)-2 ;(SP)(SRC) POP DST (DST)(SP);(SP)(SP)操作数要求:push 和 pop指令不能使用立即数寻址方式。对标志位的影响:PUSH 和 POP指令都不影响标志位。指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者 -2;POP指令的目的操作数DST不允许是CS寄存器;3. 交换指令 XCHG (exchange)格式:XCHG OPR1,OPR2操作:(OPR1)(OPR2)操作数要求:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。指令对标志位的影戏:不影响标志位。指令的特殊要求:不允许使用段寄存器。二. 累加器专用传送指令4. 输入指令 IN (input) 输出指令 OUT (output)格式:IN ac,port port0FFHIN ac,DX port0FFH OUT port,ac port0FFH OUT DX,ac port0FFH操作:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。IN ac,port port0FFH (AL)(port)传送字节 或 (AX)(port+1,port)传送字IN ac,DX port0FFH (AL)(DX)传送字节 或 (AX)(DX)+1,(DX)传送字OUT port,ac port0FFH (port)(AL)传送字节 或 (port+1,port)(AX)传送字OUT DX,ac port0FFH (DX)(AL)传送字节 或 (DX)+1,(DX)(AX)传送字对标志位的影响:不影响标志位。指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。 传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。5. 换码指令 XLAT (translate)格式:XLAT opr 或 XLAT操作: 这条指令根据AL寄存器提供的位移量,将BX指示的字节表格中的代码换存在AL中。BX代表表格首地址,AL为表内位移量,BX+AL偏移地址送给AL。 (AL)(DS)*10H+(BX)+(AL)对标志位的影响:不影响标志位。指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL。opr为表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则提高程序的可读性。三. 地址传送指令6. 有效地址传送器 LEA (load effective address)格式:LEA reg,src操作:LEA指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。操作数要求:各种存储器寻址方式。对标志位的影响:不影响标志位。指令的特出要求:指令中reg不能是段寄存器;7. 指针送寄存器和DS LDS (load DS with point)指针送寄存器和ES LES (load ES with point)格式:LDS reg,src LES reg,src操作:LDS和LES指令把确定内存单元位置的偏移地址送寄存器,段地址DS或ES。这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。 LDS reg,src (reg)(src) (DS)(src+2) LES reg,src (reg)(src) (ES)(src+2)操作数要求:src必须为存储器寻址方式对标志位的影响:不影响标志位。指令的特殊要求:指令中REG不能是段寄存器;四. 标志寄存器传送指令8. 标志寄存器的低字节送AH LAHF (load AH with FLAGS)格式:LAHF操作:(AH)(FLAGS)0-7对标志位的影响:不影响标志位9. AH送标志寄存器低字节 SAHF(store AH into FLAGS)格式:SAHF操作:(FLAGS)0-7(AH)对标志位的影响:由装入值来确定标志位的值。10. 标志进栈 PUSHF (push the flags)格式:PUSHF操作:(SP)(SP)-2 (SP)+1,(SP)(FLAGS)0-15对标志位的影响:不影响标志位。11. 标志出栈 POPF (pop the FLAGES)格式:POPF操作:(FLAGS)0-15(SP)+1,(SP) (SP)(SP)+2对标志位的影响:由装入值来确定标志位的值。算术指令一. 加法指令12. 加法指令 ADD (addition)格式:ADD dst,src操作:(dst)(src)+(dst)操作数要求:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。对标志位影响:SF=1 加法结果为负数(符号位为1) SF=0 加法结果为正数(符号位为0) ZF=1 加法结果为零 ZF=0 加法结果不为零 CF=1 最高有效位向高位有进位 CF=0 最高有效位向高位无进位 OF=1 两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反。 OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。13. 带进位加法指令 ADC (add with carry)格式:ADD dst,src操作:(dst)(src)+(dst)+CF操作数要求:他们两个操作数不能同时为存储器寻址。即除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。对标志位的影响:SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零 CF=1 最高有效位向高位有进位 CF=0 最低有效位相高位无进位 OF=1 两个同符号数相加,结果符号与其相反, OF=0 两个同符号数相加,或同符号相加,结果符号与其相同14. 加1指令 INC (increament)格式:INC opr操作:(opr)(opr)+1操作数要求 可以使用除立即数方式外的任何寻址方式对标志位的影响:SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零 OF=1 两个同符号数相加,结果符号与其相反, OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。二. 减法指令15. 减法指令 SUB (subtract)格式:SUB dst,src操作:(dst)(dst)-(src)操作数要求:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零 CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。16. 带借位减法指令 SBB (subtract with borrow)格式:SBB dst,src操作:(dst)(dst)-(src)-CF操作数要求:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零 CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。17. 减1指令 DEC (decrement)格式:DEC opr操作:(opr)(opr)-1操作数要求:可以使用除立即数方式外的任何寻址方式。对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零 OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。 18. 比较指令 CMP (compare)格式:CMP opr1,opr2操作:(opr1)-(opr2),根据相减结果设置条件码,但不回送结果。操作数要求:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零 CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。19. 求补指令 NEG (negate)格式:NEG opr操作:(opr) 0-(opr)操作数要求:可以使用除立即数方式外的任何寻址方式。对标志位的影响:CF=1 不为0的操作数求补时 CF=0 为0的操作数求补时 OF=1 操作数为-128(字节运算)或操作数为-32768(字运算) OF=0 当求补运算的操作数不为128(字节)或32768(字)时三. 乘法指令20. 无符号乘法指令 NUL (unsigned multiple) 有符号乘法指令 IMUL(signed muliple)格式:NUL src IMUL src操作:(AX)(AL)*(src) (DX,AX)(AX)*(src)操作数要求:src可以使用除立即数方式以外的任一种寻址方式。对标志位的影响:乘法指令只影响标志位CF和OF,其他条件码位无定义。 MUL指令的条件码设置为: CF OF=0 0 乘积的高一半为0(字节操作的(AH)或字操作的(DX) CF OF=1 1 乘积的高一半不为0 IMUL指令的条件码设置为: CF OF=0 0 乘积的高一半为低一半的符号扩展. CF OF=1 1 其他情况指令的特殊要求:MUL和IMUL指令的区别仅在于操作数是无符号还是带符号数,它们的共同点是,指令中只给出源操作数src,目的操作数是隐含的,它只能是累加器(字运算为AX,字节运算为AL)。隐含的乘积寄存器是AX或DX(高位)和AX(低位)。四. 符号扩展指令21. 节扩展为字 CBW (convert byte to word)格式:CBW操作:(AH)=00H 当(AL)的最高有效位为0时 (AH)=FFH 当(AL)的最高有效位为1时对标志位的影响:不影响标志位指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。22. 字扩展为双字 CWD (convert word to double word)格式:CWD操作:(DX)=0000H 当(AX)的最高有效位为0时 (DX)=FFFFH 当(AX)的最高有效位为1时对标志位的影响:不影响标志位指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。五. 除法指令23. 无符号数除法 DIV (unsigned divide) 带符号数除法 IDIV (singed divide)格式:DIV src IDIV src操作:字操作 (AL)(AX)/src的商 (AH)(AX)/src的余数 字节操作 (AX)(DX,AX)/src的商 (DX)(DX,AX)/src的余数操作数要求:src作为除数,可用除立即数以外的任一种寻址方式来取得。对标志位的影响:不影响条件码。指令的特殊要求:除法指令要求字操作时,被除数必须为32位,除数是16位,商和余数是16位的;字节操作时,被除数必须为16位,除数是8位,得到的商和余数是8位的。 六. 十进制调整指令逻辑指令一. 逻辑运算24. 逻辑与 AND (logic and)格式:AND dst,src操作:(dst)(dst)与(src)操作数要求:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。对标志位的影响:指令执行后 CF 和 OF 置零,AF无定义。 SF=1 指令执行后的结果为负数(符号位为1) SF=0 指令执行后的结果为正数(符号位为0) ZF=1 指令执行后的结果为零 ZF=0 指令执行后的结果不为零 PF=1 结果操作数中1的个数为偶数时置1 PF=0 结果操作数中1的个数为奇数时置025. 逻辑或 OR (logic or)格式:OR dst,src操作:(dst)(dst)或(src)操作数要求:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方式。对标志位的影响:指令执行后 CF 和 OF 置零,AF无定义。 SF=1 指令执行后的结果为负数(符号位为1) SF=0 指令执行后的结果为正数(符号位为0) ZF=1 指令执行后的结果为零 ZF=0 指令执行后的结果不为零 PF=1 结果操作数中1的个数为偶数时置1 PF=0 结果操作数中1的个数为奇数时置026. 逻辑非 NOT (logic not)格式:NOT orc操作:(dst)(opr)操作数要求:除立即数寻址方式以外的其余寻址方式对标志位的影响:对标志位无影响27. 异或 XOR (exclusice or)格式:XOR dst,src操作:(dst)(dst)异或(src)操作数要求:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方式。对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。 SF=1 指令执行后的结果为负数(符号位为1) SF=0 指令执行后的结果为正数(符号位为0) ZF=1 指令执行后的结果为零 ZF=0 指令执行后的结果不为零 PF=1 结果操作数中1的个数为偶数时置1 PF=0 结果操作数中1的个数为奇数时置028. 测试指令 TEST格式:TEST opr1,opr2操作:(opr1)与(opr2)操作数要求:两个操作数不能同时为存储器寻址,即为除源操作数为立即数的情况外,源操作数和目的操作数必须有一个寄存器寻址方式。对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。 SF=1 指令执行后的结果为负数(符号位为1) SF=0 指令执行后的结果为正数(符号位为0) ZF=1 指令执行后的结果为零 ZF=0 指令执行后的结果不为零 PF=1 结果操作数中1的个数为偶数时置1 PF=0 结果操作数中1的个数为奇数时置0 二. 移位指令29. 逻辑左移 SHL (shift logical left)格式:SHL dst,cnt操作:SHL指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入CF。操作数要求:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值 OF=1 当cnt=1时,移动后最高位的值发生变化。 OF=0 当cnt=1时,移动时最高位的值未发生变化。 SF. ZF. PF根据移动后的结果设置。30. 逻辑右移 SHR (shift logical right)格式:SHR dst,cnt操作:SHR指令向右逐位移动cnt次,每次逐位移动后,最高位用0来补充,最低位移入CF。操作数要求:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值 OF=1 当cnt=1时,移动后最高位的值发生变化。 OF=0 当cnt=1时,移动时最高位的值未发生变化。 SF. ZF. PF根据移动后的结果设置。31. 算术左移 SAL (shift arithmetic left)格式:SAL dst cnt操作:SAL指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入CF。操作数要求:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值 OF=1 当cnt=1时,移动后最高位的值发生变化。 OF=0 当cnt=1时,移动时最高位的值未发生变化。 SF. ZF. PF根据移动后的结果设置。32. 算术右移 SAR (shift arithmetic right)格式:SAR dst,cnt操作:SAR指令向右逐位移动cnt次,每次逐位移动后,最高位用符号位来补充,最低位移入CF。操作数要求:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值 OF=1 当cnt=1时,移动后最高位的值发生变化。 OF=0 当cnt=1时,移动时最高位的值未发生变化。 SF. ZF. PF根据移动后的结果设置。33. 循环左移 ROL (rotate left)格式:ROL dst,cnt操作:ROL 对由dst指定的寄存器或存储器操作数左移循环移动cnt所指定的次数,每左移一次,把最高位同时移入CF和操作数最低位。操作数要求:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值 OF=1 当cnt=1时,移动后最高位的值发生变化。 OF=0 当cnt=1时,移动时最高位的值未发生变化。 SF. ZF. PF根据移动后的结果设置。34. 循环右移 ROR (rotate right)格式:ROR dst,cnt操作:ROR 对由dst指定的寄存器或存储器操作数右移循环移动cnt所指定的次数,每右移一次,把最低位同时移入CF和操作数最高位。操作数要求:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值 OF=1 当cnt=1时,移动后最高位的值发生变化。 OF=0 当cnt=1时,移动时最高位的值未发生变化。 SF. ZF. PF根据移动后的结果设置。35. 带进位的循环左移 RCL (rotate left through carry)格式:RCL dst,cnt操作:RCL 对由dst指定的寄存器或存储器操作数,连同进位标志CF左循环移动,m所指定的次数,每左移一次,把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位。指定支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值。 OF=1 当cnt=1时,移动后最高位的值未发生变化。 OF=0 当cnt=1时,移动后最高位的值发生变化。 SF. ZF. PF标志位不受影响。36. 带进位的循环右移 RCR (rotate right through carry)格式:RCR dst,cnt操作:RCR 对由dst指定的寄存器或存储器操作数,连同进位标志CF右循环移动,m所指定的次数,每右移一次,把操作数的最高低位移入CF,而CF中原有内容移入操作数的最高位。操作数要求:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写入指令中,cnt1时,cnt必须放入CL寄存器中。对标志位的影响:CF=移入的数值。 OF=1 当cnt=1时,操作数最高 位的值未发生变化。 OF=0 当cnt=1时,操作数最高位的值发生变化。 SF. ZF. PF标志位不受影响。串处理指令一. 设置方向标志指令37. DF置零 CLD (clear direction flag) DF置一 STD (set direction flag)格式:CLD STD操作:CLD DF=0 STD DF=1二. 串处理指令38. 串传送 MOVSB / MOVSW (move string byte/word)格式:MOVSB MOVSW操作:(ES:DI)(DS:SI) (SI)(SI)+/-1(字节)或+/-2(字) (DI)(DI)+/-1(字节)或+/-2(字)指令对条件码的影响:不影响条件码。指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。39. 存串 STOSB / STOSW (stroe from string byte/word)格式:STOSB STOSW操作:(ES:DI)(AL)或(AX) (DI)(DI)+/-1(字节)或+/-2(字)指令对条件码的影响:不影响条件码。指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。40. 取串LODSB / LODSW (load from string byte/word)格式:LODSB LODSW操作:(AL)或(AX)(DS:SI) (SI)(SI)+/-1(字节)或+/-2(字)指令对条件码的影响:不影响条件码。指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。41. 串比较 CMPSB / CMPSW (compare string byte/word)格式:CMPSB CMPSW操作:(DS:SI)-(ES:DI) 根据比较结果设置条件码 (SI)(SI)+/-1(字节)或+/-2(字) (DI)(DI)+/-1(字节)或+/-2(字)指令对条件码的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零 CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。42. 串扫描 SCASB / SCASW (scan string byte / word)格式:SCASB SCASW操作:(AL)(ES:DI)或(AX)(ES:DI) 根据扫描比较的结果设置条件码。 (DI)(DI)+/-1(字节)或+/-2(字)指令对条件码的影响:SF=1 结果为负数(符号位为1) SF=0 结果为正数(符号位为0) ZF=1 结果为零 ZF=0 结果不为零 CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。三. 串重复前缀43. 重复执行串 REP 格式:REP (CX)=重复次数操作: (CX)=0时,串指令执行完毕,否则执行 (CX)(CX)1 执行串指令(MOVS或STOS) 重复执行44. 相等/为零时重复执行串指令 REPE/REPZ格式:REPE / REPZ (CX)=比较/扫描的次数操作: (CX)=0或ZF=0时,结束执行串指令,否则继续 (CX)(CX)1 执行串指令(CMPS或SCAS) 重复执行45. 不等/不为零时重复执行串指令 REPNE / PEPNZ格式:REPNE / PEPNZ (CX)=比较/扫描的次数操作: (CX)=0或ZF=1,结束执行串指令,否则继续 (CX)(CX)1 执行串指令(CMPS或SCAS) 重复执行控制转移指令一无条件转移指令46. 短转移 JMP SHORT label (short jump)格式:JMP SHORT label操作:(IP)当前(IP)+8位位移量 8位位移量是汇编程序在汇编源程序时,根据目标地址和当前IP之间的距离自动生成的。指令对条件码的影响:对标志位无影响。47. 近转移 JMP NEAR PTR label (near jump)格式:直接转移 JMP label (direct jump) 寄存器间接转移 JMP reg (register indirect jump) 存储器间接转移 JMP WORD PTR OPR (memory indirect jump)操作:JMP label (IP) OFFSET label = (IP)当前16位位移量 JMP reg (IP) (reg) JMP WORD PTR OPR (IP) (PA+1,PA)操作数要求:指令中的转向地址可以是直接寻址方式. 寄存器寻址方式. 寄存器间接寻址方式和存储器寻址方式。指令对条件码的影响:对标志位无影响。48. 远转移 JMP FAR PTR label (for jump)格式:JMP FAR PTR label操作:(IP)label的段内偏移地址 (CS)label所在段的段地址操作数要求:远转移的目的地址可以使用除立即寻址方式外的任何寻址方式来表示。指令对条件码的影响:对标志位无影响。二. 条件转移指令格式及功能根据条件码的值转移:49. JZ(JE) OPR ZF=150. JNZ(JNE) OPR ZF=051. JS OPR SF=152. JNS OPR SF=053. JO OPR OF=154. JNO OPR OF=055. JP OPR PF=156. JNP OPR PF=057. JC OPR CF=158. JNC OPR CF=0比较两个无符号数,根据比较的结果转移59. JB(JNAE,JC) OPR CF=1 被减数小于减数则转移60. JNB(JAE,JNC) OPR CF=0 被减数大于或等于减数则转移61. JBE(JNA) OPR CF或ZF=1 被减数小于或等于减数则转移62. JNBE(JA) OPR CF或ZF=0 被减数大于减数则转移比较两个带符号数,根据比较结果转移63. JL/JNGE OPR SF异或OF=1 被减数小于减数则转移64. JNL/JGE SF异或OF=0 被减数不小于减数则转移65. JLE/JNE (SF异或OF)与ZF=1 被减数不大于减数则转移66. JNLE/JG (SF异或OF)与ZF=0 被减数大于减数则转移根据CX寄存器的值转移67. JCXZ (CX)=0 CX内容为零 则转移指令的特殊要求:所有条件转移指令都是短转移指令,转移的目标地址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【中考专题】2026年中考数学专项提优复习:代数式【附答案】
- 2025产品代理合同范本
- 2025年大庆油田有限责任公司春季高校毕业生招聘模拟试卷附答案详解(完整版)
- 2025合同买卖协议书样本
- 2025江西赣州经济技术开发区退役军人服务中心招聘见习生1人考前自测高频考点模拟试题及答案详解(夺冠)
- 2025年四川省成都市青白江区七所“两自一包”公办学校招聘教师(152人)考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025医疗机构专家劳动合同书
- 2025年牡丹江绥芬河市公开招聘公益性岗位工作人员20人(第一批)考前自测高频考点模拟试题及答案详解(夺冠系列)
- 焦作师范考试题库及答案
- 煤矿班长考试题库及答案
- pos风险管理办法
- 中石化质量管理体系
- 上肢静脉血管超声检查规范与应用
- 2025年职业指导师(二级)专业能力职业素养提升辅导策略实务策略试卷
- 2025 精神科护理抑郁患者干预医学查房课件
- 2025年汽车驾驶员(技师)考试题库及答案
- 遵义介绍课件
- 播音主持重音的教学课件
- 2025年辽宁省公安招聘辅警考试试卷及答案
- 2025年福建省选调生考试综合知识真题解析试卷
- 飞书软件使用培训
评论
0/150
提交评论