汇编语言第3章精要.ppt

汇编语言第3章精要

SAL指令 SAR指令 SHL 指令 SHR指令 ROL指令 ROR指令 RCL指令 RCR指令 比较SUB与SBB对OF的影响 STC ;该指令使得CF=1 MOV AX,8000H SBB AX,0H OF= ? MOV AX,8000H SUB AX,0H OF= ? 1 0 问题思考: 比较SUB与SBB对CF的影响 STC ;该指令使得CF=1 MOV AX,9876H SBB AX,9876H CF= ? MOV AX,9876H SUB AX,9876H CF= ? 1 0 问题思考: 该指令为单操作数指令,将目的操作数的内容减1后,送回到目的操作数。即:DEST=(DEST)-1 6.减1指令 指令格式:DEC DEST DEST可以是8位或16位的通用寄存器存储器操作数。 根据指令执行结果设置PF、AF、ZF、SF和OF,(与 SUB DEST, 1 相同)但不影响CF。 SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零 OF=1 当(DEST)为字节数据-128(补码为80H)或者-32768(补码为8000H)时 OF=0 除上述的情况。 DEC指令的使用类似INC指令。主要用于计数和修改地址指针,的计数方向与INC指令相反。 上述程序段中,是一个错误应用DEC指令的例子。 DEC指令不影响CF位。 例 MOV AL,10H LOP: DEC AL JNC LOP 上述程序段中,有无错误? 问题思考: 指令”DEC BX”和”SUB BX, 1”的执行结果一样吗?请分析。 指令DEC BX和SUB BX, 1分别执行后,BX寄存器内的值相同,但是CF标志位的状 态可能不同,这是由于DEC指令执行后不改变CF的状态。 指令执行后OF= ? MOV AX, 8000H DEC AX MOV AL, 80H DEC AL 1 指令执行后OF= ? 1 问题思考: 指令功能:用零减去目的操作数的内容,并送回目的操作数,即:DEST=0-(DEST) DEST可以是任意一个8位或16位的通用寄存器或存储器操作数,被视为带符号的操作数。 由于机器中带符号数用补码表示的,求操作数的负数就是求补操作。因此,NEG指令也叫取补指令。 7.求负数指令 指令格式:NEG DEST CF=1  操作数不为0时 CF=0  操作数为0时 OF=1 操作数为-128(字节运算)或操作数为-32768(字运算) OF=0 操作数不为-128(字节)或-32768(字)时 NEG指令将影响标志PF、AF、ZF、SF、CF和OF。 例1 设AL中存放一个正数:(AL)=25H,BL中存放一个负数:(BL)= - 58H,求它们的相反数。 NEG AL NEG BL 指令执行后,(AL)= - 25H (BL)= 58H 例2 一个32位带符号数存放在DAW开始的四个字节存储单元中,DAW字节单元存放最低字节。求该数的负数,并存入原存储单元中。 NEG WORD PTR DAW MOV AX,0 SBB AX,DAW+2 MOV DAW+2,AX 结果的低16位由指令NEG直接得到,而高16位还要考虑低16位产生的借位,因此使用了带借位的指令SBB。 逻辑“与”指令 AND DEST,SRC 逻辑“或”指令 OR DEST,SRC 逻辑“异或”指令 XOR DEST,SRC 逻辑“非”指令 NOT DEST 三、位操作类指令 1.逻辑运算指令 逻辑运算指令共有4条,它们的指令格式分别是: DEST和SRC可以是8位或16位的通用寄存器或存储器操作数,但两者不能同时为存储器操作数,SRC可以为立即数。 这4条指令都是执行按位逻辑运算,如下表所示: DEST SRC AND OR XOR NOT 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1

文档评论(0)

1亿VIP精品文档

相关文档