关于汇编伪指令,逻辑移位操作的一道题目:
DA3 EQU WORD PTR DA4
DA4 DB 0ABH,89H
SHR DA3,1
MOV DX,DA3
SHL DA4,1
MOV CX,DA3
上述程序段运行后,CX= ,DX=
DA3 EQU WORD PTR DA4
;DA3和DA4相当于是数值相等的2个变量,其中一个发生变化时,另外一个也会立刻发生变化;此条伪指令相当于用DA3这个变量占用一个字(2个字节)的空间
DA4 DB 0ABH,89H
;这条指令执行后,会在内存空间中给DA4分配一个字的空间存放89ABH,其中89H是在高地址存放,也是数值的高位,0ABH是在低地址存放,也是数值的低位,但是变量的最小可分割单元是字节
SHR DA3,1
;逻辑右移指令执行后,DA3的值由89ABH变为44D5H,右移一位相当于除以2,二进制的最低位丢掉,二进制的最高位填入0
同时DA4在内存中的值也变化为44D5H
MOV DX,DA3
;数据传送指令,DX的值变为44D5H,不影响标志寄存器的值
SHL DA4,1
;逻辑左移指令执行,相当于是将DA4变量的第一个可分割单元的值左移一位,第一个单元的值由D5H变化为AAH,最终DA4的值由44D5H变为44AAH
同时DA3在内存中的值也变化为44AAH
MOV CX,DA3
;数据传送指令,CX的值变为44AAH,不影响标志寄存器的值
所以最终,(CX)=44AAH,(DX)=44D5H