汇编语言中$符号的意思是什么?

如下题:执行下面指令后(BX)=??X1DW'CD'X2DB16DUP(?)YEQU$-X1MOVBX,Y最好详细解释一下$这个东西怎么用?... 如下题:执行下面指令后(BX)=??
X1 DW 'CD'
X2 DB 16DUP (?)
Y EQU $-X1
MOV BX,Y
最好详细解释一下$这个东西怎么用?
展开
 我来答
KawaguchiSky
推荐于2018-03-20 · TA获得超过2638个赞
知道小有建树答主
回答量:296
采纳率:100%
帮助的人:127万
展开全部
看图你就会明白。实际上标号X1的首地址为ASCII码C的字单元地址,X2的首地址开始于 DB 16 dup (?) 语句,紧接着X1的终止地址,那么它的首地址相对于X1偏移4 - 1个字节单元;X2的终止地址相对于其首地址偏移16 - 1个字节单元,相对于X1偏移18个字节单元。那么$ - X1实际上是当前地址与X1首地址之差。由此可以得出,mov BX, Y指令执行后,BX的值为18d,也就是12h。

| …… |
| 43h | ASCII: C 4 byte X1
| 00h |
| 44h | ASCII: D
| 00h |
| ? | 16 byte X2
……
| ? | <--- $
| …… |
(当前地址$与X1首地址之差为18个字节偏移,等同于X1与X2占有的字节单元,不包括X1的首地址和X2的终止地址)

关于伪指令$,它表示地址计数器的当前值,也就是本条指令第一个字节的地址偏移,如:
ORG $ + 8 表示起始地址定位于当前编译地址第一字节的后8个字节处;JMP $ 表示无条件转移至当前地址,其实际执行效果为永远停留在当前地址。
又如:Array DW 1, 2, $ + 4, 3, 4, $ + 4,可以用图表示为:

| …… |
| 01h | <--- Array 1
| 00h |
| 02h | 2
| 00h |
| 08h | $ + 4 ($相对于Array首地址的偏移是4,因此$ + 4 = 8h)
| 00h |
| 03h | 3
| 00h |
| 04h | 4
| 00h |
| 0eh | $ + 4 ($相对于Array首地址的偏移是10,因此$ + 4 = 0eh)
| 00h |
| … … |

可见,$用在不同的地方,其表示的当前地址计数是不同的。
AJISky
2011-09-14 · TA获得超过1122个赞
知道小有建树答主
回答量:457
采纳率:100%
帮助的人:242万
展开全部
当前句子的地址
$-X1就是X1+X2总共占用空间大小
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
413526602
2011-09-15
知道答主
回答量:28
采纳率:0%
帮助的人:3.4万
展开全部
是一个等待符,比如JMP $;他就会一直停在这里,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
气愤我不注册了
2011-09-15 · TA获得超过120个赞
知道答主
回答量:94
采纳率:0%
帮助的人:74.4万
展开全部
就是当前地址。(BX)=18
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式