汇编语言-5.1 [BX]

文章描述了一个汇编语言程序,通过mov指令在内存和寄存器间移动数据。程序首先将DS寄存器设置为2000H,BX设置为1000H,然后从DS:BX(21000H)地址读取数据到AX。接着,AX中的值被写回到不同的内存位置,导致21002H至21006H单元分别被写入特定的数据。最后,程序执行结束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指令 mov ax,[bx]
作用:把寄存器bx里的内容当作偏移量(段地址在ds里),把ds:[bx] 地址处的内容放入ax

问题5.1
程序和内存初始情况如下:
程序执行后的,21000H-21007H单元的内容
在这里插入图片描述
逐步分析:

  1. mov ax,2000H
    ax = 2000H
  2. mov ds,ax
    ds = 2000H
  3. mov bx,1000H
    bx = 1000H
  4. mov ax,[bx]
    将 ds:[bx] 处, 也就是2000H:1000H, 也就是21000H处的 内容mov到ax里,ax = 00BEH
  5. inc bx
    bx += 1 -> bx = 1001H
  6. inc bx
    bx += 1 -> bx = 1002H
  7. mov [bx], ax
    将ax的内容 (00BEH) 复制到ds:[bx] 处, 也就是2000H:1002H处,
    此时21002H字节为BEH,21003H字节为00H
  8. inc bx
    bx += 1 -> bx = 1003H
  9. inc bx
    bx += 1 -> bx = 1004H
  10. mov [bx],ax
    21003H处为BEH,21004H处为00H
  11. inc bx
    bx += 1 -> bx = 1005H
  12. mov [bx],al
    21005H处为ax的低8位 -> BEH
  13. inc bx
    bx += 1 -> bx = 1006H
  14. mov [bx],al
    21006H处为ax的低8位 -> BEH
    所以结束时内存的情况:
    在这里插入图片描述
    程序验证:
    代码:
assume cs:codesg

codesg segment
        mov ax,2000H
        mov ds,ax
        mov bx,1000H
        mov ax,[bx]
        inc bx
        inc bx
        mov [bx],ax
        inc bx
        inc bx
        mov [bx],ax
        inc bx
        mov [bx],al
        inc bx
        mov [bx],al

        mov ax,4c00H
        int 21H
codesg ends

end

debug程序:
在这里插入图片描述
运行结束时的内存
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值