逻辑移动指令

Tutorial: 汇编基础 Category: C语言 Published: 2026-04-07 13:58:26 Views: 20 Likes: 0 Comments: 0
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