首先写好代码,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
分析过程:
前三条指令:
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
第五六条指令:
inc bx
inc bx
执行完之后,bx=1002H
第七条指令:
mov [bx],ax
这句指令是将ax中的数据送入到段地址为2000H,偏移地址为1002H的内存单元中
1000 1001 1002 1003 16个字节进10H