汇编语言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什么意思?