逻辑移动指令
1. shl shr
shl 是逻辑左移指令,它的功能为:
- 将一个寄存器或内存单元中的数据向左移位;
- 将最后移出的一位写入 CF 中;
- 最低位用 0 补充。
shr 是逻辑右移指令,同理
mov al, 01001000b
shl al, 1 ;将a1中的数据左移一位执行后(al)=10010000b,CF=0。
mov al, 01010001b
mov cl, 3 ;如果移动位数大于1时,必须将移动位数放在cl中
shl al, c1
mov al, 10000001b
shr al, 1 ;将al中的数据右移一位执行后(al)=01000000b,CF=1。
- 将 X 逻辑左移一位,相当于执行 X=X*2。
- 将 X 逻辑右移一位,相当于执行 X=X/2
2. 检测点 14.2
编程:用加法和移位指令计算(ax)=(ax)*10 提示:(ax)*10=(ax)*2+(ax)*8
assume cs:code
code segment
start:
mov ax,2
shl ax,1
mov bx,ax
shl ax,1
shl ax,1
add ax,bx
mov ax,4c00h
int 21h
code ends
end start
AX=0010 BX=0004 CX=0012 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=000B NV UP EI PL NZ AC PO NC
0E24:000B 03C3 ADD AX,BX
-t
AX=0014 BX=0004 CX=0012 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=000D NV UP EI PL NZ NA PE NC
0E24:000D B8004C MOV AX,4C00