首先寫好代碼髓霞,asm文件,debug進(jìn)行調(diào)試瘦锹,先使用e命令修改內(nèi)存為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來修改,執(zhí)行完之后:
ds=2000H bx=1000H 這時ds(代碼段寄存器)就指向了21000H辱士。
第四條指令:
mov ax,[bx]
這句指令的意思是泪掀,將段地址為2000H,偏移地址為1000H的內(nèi)存單元中的值賦值給ax颂碘,21000H內(nèi)存單元中的值是00BEH异赫,所以執(zhí)行完之后,ax變成00BEH
2.png
第五六條指令:
inc bx
inc bx
執(zhí)行完之后头岔,bx=1002H
第七條指令:
mov [bx],ax
這句指令是將ax中的數(shù)據(jù)送入到段地址為2000H祝辣,偏移地址為1002H的內(nèi)存單元中
?1000 1001 1002 1003 16個字節(jié)進(jìn)10H
3.png