在前面,我们用[bx(si或id)]和[bx(si或di)+idata]的方式来指明一个内存单元,我们还可以用更为灵活地方式:[bx+si]和[bx+di]
[bx+si]表示一个内存单元,它的偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)
问题7.4
用debug查看内存,结果如下:
2000:1000 BE 00 06 00 00 00 ...
写出下面程序执行后,ax、bx、cx中的内容
mov ax,2000H
mov ds,ax
mov bx,1000H
mov si,0
mov ax,[bx+si]
inc si
mov cx,[bx+si]
inc si
mov di,si
add cx,[bx+di]
分析
ax: 00 BEH
bx: 10 00H
cx: 06 06H
源程序
assume cs:code
code segment
start:
mov ax,2000H
mov ds,ax
mov bx,1000H
mov si,0
mov ax,[bx+si]
inc si
mov cx,[bx+si]
inc si
mov di,si
add cx,[bx+di]
mov ax,4c00h
int 21h
code ends
end start
debug布置内存环境
debug执行结果
结果与分析一致