汇编语言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
不能互换
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-11-13
这两条指令是相同的,都是直接寻址:
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。本回答被网友采纳
第2个回答  2012-11-12
mov ax, [bx] 指把寄存器ax中的内容传送到偏移地址为bx的内存中!
mov ax, bx 指把寄存器ax中的内容传送到bx中!
第3个回答  2011-10-20
将bx中的数作为偏移地址