目录 上一页 下一页 下一章

-130- PC机汇编语言实战精解

-t     逻辑"AND"操作的结果
AX=0001BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13CDES=13CDSS=13CDCS=13CDIP=010D NV UP EI PL NZ NA PO NC
13CD:010DD1C8ROR AX,1    准备进行移位操作符号标志再次清0
  最后是利用移位指令改变符号位时标志寄存器的变化,可以看到移位指令"ROR"没有改变SF标志。
-t     移位后的结果
AX=8000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13CDES=13CDSS=13CDCS=13CDIP=010F NV UP EI PL NZ NA PO NC
13CD:010FB208MOV DL,08符号标志无变化
  从上面的跟踪结果我们可以看到数学运算和逻辑操作结果的符号位如果有变化,则SF标志随之改变。但是用数据传递指令和移位指令改变符号位后SF标志无变化(注意上面程序中指令MOV和ROR执行后的SF标志)。为保险起见,我们专门验证一下各类移位指令对SF的影响:
C:\ASM\>DEBUG [Enter]
-a100[Enter]
13CD:0100 mov ax,7fff
13CD:0103 shl ax,1
13CD:0105 shr ax,1
13CD:0107 mov ax,4000
13CD:010A rol ax,1
13CD:010C[Enter]


;AX寄存器送入7FFFH
;逻辑左移
;逻辑右移
;AX寄存器送入4000H
;循环左移

-t     AX寄存器送入7FFFH
AX=7FFFBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13CDES=13CDSS=13CDCS=13CDIP=0103 NV UP EI PL NZ NA PO NC
13CD:0103D1E0SHL AX,1     准备进行逻辑左移注意SF标志为0
  以下是逻辑左移指令的跟踪结果,可以看到符号标志位发生改变。
-t     逻辑左移的结果
AX=FFFEBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13CDES=13CDSS=13CDCS=13CDIP=0105 NV UP EI NG NZ NA PO NC
13CD:0105D1E8SHR AX,1SF标志置1
  逻辑右移指令同样影响SF标志,这可以通过下面的跟踪结果看出。由此我们可以认为逻辑

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章