逻辑位移指令shl和shr是第14章的内容,我感觉书上对这两个指令的描述不是太好理解,实际上对shl指令更容易让人理解的描述是:shl指令对给定的目的操作数左移(cl)次,每次移位时最高的那一位移入CF中,最低位补0,移动位数大于1时,必须将移动位数放在cl中。shr指令也可以类比理解。
通过编写下面的一个子程序,能更加深入的理解了这两个指令。
;功能:把寄存器中的数值显示在屏幕上
;入口参数:ax,需要在屏幕上显示的寄存器
inputReg:
mov cx,0003h ;设置cl=3,初次左移3位。ch=0
s1:shl ...
[2009-10-15 13:38] 深入理解逻辑位移指令
阅读全文 |
评论次数(0) |
浏览次数(403) |
所属类型(默认类型)
[2009-09-03 21:05] 标志寄存器
标志寄存器FR(Flag Register)
8086有一个18位的标志寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。
按顺序是:CF PF AF ZF SF TF IF DF OF
OF(Overflow Flag): 溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被置为0。
DF(Direction Flag):方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。控制每次操作后si,di的增减,0增1减
...
8086有一个18位的标志寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。
按顺序是:CF PF AF ZF SF TF IF DF OF
OF(Overflow Flag): 溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被置为0。
DF(Direction Flag):方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。控制每次操作后si,di的增减,0增1减
...
阅读全文 |
评论次数(0) |
浏览次数(498) |
所属类型(默认类型)
[2009-08-08 14:24] 实验8中的小陷阱
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:
mov ax,0
s:
nop ;现在还没有用,一会将被覆盖。
nop
mov di,offset s ;把标号s的偏移地址赋给di
mov si,offset s2 ;把标号s2的偏移地址赋给si
mov ax,cs:[si] ;[si]是s2的偏移地址,该语句把标号s2
;处的语句jmp short s1(机器码:EBF6)
...
codesg segment
mov ax,4c00h
int 21h
start:
mov ax,0
s:
nop ;现在还没有用,一会将被覆盖。
nop
mov di,offset s ;把标号s的偏移地址赋给di
mov si,offset s2 ;把标号s2的偏移地址赋给si
mov ax,cs:[si] ;[si]是s2的偏移地址,该语句把标号s2
;处的语句jmp short s1(机器码:EBF6)
...
阅读全文 |
评论次数(0) |
浏览次数(400) |
所属类型(默认类型)