【8086汇编】将AL寄存器的字节内容反序存储

一、步骤流程

02184a1411ef43f6a86e0f9a4532b9fb.jpg

首先将需要显示的数据放入AL寄存器中,将AH置为0;AX寄存器逻辑左移一位,AL的最高一位被送入AH,将AH送入内存保存。 

21b94123f45c45508707ea946cf16365.jpg

接着继续将AH置0,因为我们只需要其最低位,不置零将会影响后续的写回操作。 

ab4a2b4a3fda4cdbbf1b91fcab552a76.jpg

继续逻辑左移一位,将第二位送入AH,并将AH送内存存储,并将AH置0. 

 176d34ada8ca4688868e99d1e6124246.jpg

通过8次这样的重复操作就能将AL的8位分离送入内存的八个不同字节内 。

 41655d13c5cd436ebe66b84ca5bb4083.jpg

最后就是写回操作,从后往前将内存各个字节的内容通过加操作送入AL(不可用mov,会改变AL的其他位),加完后逻辑左移一位。注意写回只需移位7次,最后一次直接加不用移位。

二、相关代码

assume cs:code, ds:data
data segment
  db 0,0,0,0,0,0,0,0
data ends

code segment
  start:  mov ax, data
          mov ds, ax
          mov ah, 1 
          int 21h ; al写入数据

          mov bx, 0
          mov cx, 8
    s:    mov ah, 0
          shl ax, 1
          mov ds:[bx], ah
          inc bx
          loop s

          mov bx, 7
          mov cx, 7
          mov al, 0
    s1:   add al, [bx]
          shl ax,1
          dec bx
          loop s1
          add al, [bx]

          mov ax, 4c00h
          int 21h

code ends
end start
          

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值