汇编语言[bx+si+idata]和[bx+di+idata]

[bx+si+idata]表示一个内存单元,它的偏移地址为(bx)+(si)+idata(即bx中的数值加上si中的数值再加上idata).

我们看一下指令mov ax,[bx+si+idata]的含义:

将一个内存单元的内容送入ax,这个内存单元长度为2字节(字单元),存放一个字,偏移地址为bx中的数值加上si中的数值在加上idata,段地址在ds中.

数学化的描述为:(ax)=((ds)*16+(bx)+(si)+idata)

该指令也可以写成如下格式(常用):

mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200

用DEBUG查看内存:

d 2000:1000

写出下面的程序执行后,ax,bx,cx中的内容.

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

mov si,0

mov ax,[bx+2+si]
inc si

mov cx,[bx+2+si]
inc si

mov di,si
mov bx,[bx+2+di]

分析:

mov ax,[bx+2+si]

访问的字单元的段地址在ds中, (ds)=2000H;偏移地址=(bx)+(si)+2=1002H;指令执行后(ax)=0006H

mov cx,[bx+2+si]

访问的字单元的段地址在ds中,(ds)=2000H;偏移地址=(bx)+(si)+2=1003H;指令执行后(cx)=6A00H

mov bx,[bx+2+di]

访问的字单元的段地址在ds中,(ds)=2000H;偏移地址=(bx)+(di)+2=1004H;指令执行后(bx)=226AH


发布日期:

所属分类: 易语言 标签: