汇编语言中关于常量和变量的寻址方式

代码如下:
data segment
D=4524H ;定义D为常量
value dw 1234H ;定义value为变量
data ends

code segment
assume cs:code,ds:data
start: mov ax, data
mov ds, ax
mov ax, [value]
mov ax, ds:[value]
mov ax, [D]
mov ax, [4524H]
mov ax, ds:[4524H]
mov ax, ds:[D]
mov ah, 4ch
int 21h
code ends

end start

测试如下:
汇编语言中关于常量和变量的寻址方式

mov ax, [value]
mov ax, ds:[value]
由图可知,这两种被认为直接寻址方式,而且常量D的定义没有占用字节,所以value的偏移地址是0000h。

汇编语言中关于常量和变量的寻址方式
mov ax, [D]
mov ax, [4524H]
由图可知,如果不加段前缀,这两种被认为立即寻址方式,可见常量D在汇编语言中被看作立即数。

汇编语言中关于常量和变量的寻址方式
mov ax, ds:[4524H]
mov ax, ds:[D]
由图可知,加了段前缀ds:后,就是直接寻址了,在汇编源程序中,用立即数作为偏移地址采用直接寻址方式要加段前缀,
在dubug 命令下,可以不加段前缀,系统默认在ds段。

由此可见,常量与变量在汇编语言寻址方式中的一些区别。

参考资料:汇编语言等号=伪指令 http://m.biancheng.net/view/3477.html
汇编语言的符号、标号和变量符号 转自: https://blog.****.net/benny5609/article/details/2470132#commentBox