[bx]指令

首先写好代码,asm文件,debug进行调试,先使用e命令修改内存为be 00:

assume cs:codeseg

codeseg segment

zhaochenyu: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

codeseg ends

end zhaochenyu
1.png

分析过程:

前三条指令:

mov ax,2000H
mov ds,ax
mov bx,1000H

按照前面说的,mov指令不能直接修改ds的值,所以通过ax来修改,执行完之后:

ds=2000H bx=1000H 这时ds(代码段寄存器)就指向了21000H。

第四条指令:

mov ax,[bx]

这句指令的意思是,将段地址为2000H,偏移地址为1000H的内存单元中的值赋值给ax,21000H内存单元中的值是00BEH,所以执行完之后,ax变成00BEH

2.png

第五六条指令:

inc bx
inc bx

执行完之后,bx=1002H

第七条指令:

mov [bx],ax

这句指令是将ax中的数据送入到段地址为2000H,偏移地址为1002H的内存单元中

​1000 1001 1002 1003 16个字节进10H

3.png

后面几条指令和上述同理,执行代码后,查看内存后,都符合预期

你可能感兴趣的:([bx]指令)