注册 登录
编程论坛 汇编论坛

请问'$'有什么用?

华龙 发布于 2007-06-24 22:22, 703 次点击

已知定义:
STR1 DW 'NO'
STR2 DB 14 DUP(?)
COUT EQU $-STR1

4 回复
#2
hero20072007-06-24 22:26
这里COUT等于2,STR1中的NO后有个$的。
#3
华龙2007-06-24 22:32
以下是引用hero2007在2007-6-24 22:26:00的发言:
这里COUT等于2,STR1中的NO后有个$的。

字串后面也要'$'的?
谢谢了啊
#4
zhulei19782007-06-24 22:34

在汇编程序对源程序汇编的过程中,使用地址计数器来保存当前正在汇编的指令的地址,地址计数器可用$来表示,汇编语言允许用户直接用$来引用地址计数器的值,因此
org $+8表示跳过8个字节的存储区,
在指令和伪操作中也可以直接用$来表示地址计数器的值,如
JNE $+8
则转向地址是JNE指令的首地址加上6,即当$用在指令中时,它表示本条指令的第一个字节的地址。在这里,$+6必须是另一条指令的首地址,否则,汇编程序将指示出错信息。当$用在伪操作的参数字段时,则和用在指令中的情况不同,它表示的是地址计数器的当前值。

[此贴子已经被作者于2007-6-24 22:34:31编辑过]

#5
华龙2007-06-25 11:49
以下是引用zhulei1978在2007-6-24 22:34:02的发言:

在汇编程序对源程序汇编的过程中,使用地址计数器来保存当前正在汇编的指令的地址,地址计数器可用$来表示,汇编语言允许用户直接用$来引用地址计数器的值,因此
org $+8表示跳过8个字节的存储区,
在指令和伪操作中也可以直接用$来表示地址计数器的值,如
JNE $+8
则转向地址是JNE指令的首地址加上6,即当$用在指令中时,它表示本条指令的第一个字节的地址。在这里,$+6必须是另一条指令的首地址,否则,汇编程序将指示出错信息。当$用在伪操作的参数字段时,则和用在指令中的情况不同,它表示的是地址计数器的当前值。


谢谢了,明白了!

1