当前位置:编程学习 > 汇编语言 >>

汇编语言mov ax, [bx]是什么意思,不太理解中括号在此处的用法

可以改写成mov ax,bx吗?可以解释下这个程序中"[ ]"的用法吗 data segment buf db 'ABCDEF' num dw 72,-5,100h poin dw 0 data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov dx,[num] ; =mov dx,num 编译后均为 mov dx,[0006] (DX=0048) mov si,offset num lea si,num ; mov ax,[si] ; lea ax,[si] ; lea di,4[si] ; mov al,buf ; mov ah,offset buf ;ah=00 mov poin,offset buf ;编译后为 mov word ptr [000C],0000 exit: mov ah,4ch int 21h code ends end start
答案:mov ax, [bx];该指令中,bx中存储的值为一个偏移地址,该指令是将bx中存储的数据段偏移地址所对应的存储器中的值传送给ax。
mov ax,bx是把bx中存储的值传送给ax
不能互换
其他:这两条指令是相同的,都是直接寻址:
mov dx,num    按照变量名称,取来它的内容;
mov dx,[num]    按照变量地址,取来它的内容。

如果想要用间接寻址,则:
MOV   BX,  OFFSET  NUM 取NUM的偏移地址;
MOV   DX,  [BX]   间接寻址,取来NUM的内容。

另外:
MOV   BX,  OFFSET  NUM 取NUM的偏移地址;
和
LEA   BX,   NUM
又是完全相同的,都是传送NUM的偏移地址到BX。 将bx中的数作为偏移地址 

上一个:用汇编语言编写程序,实现3个数比较大小,并从高到低输出结果。
下一个:单片机中汇编语句MOV 32H,C什么意思?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,