汇编语言中的@和$是什么意思啊?

这么一段话:dll注意下要进行重定位call$+5;机器码是E80000000000000000是相对地址@@:popebxsubebx,@b里边的@@是什么意思?后边的... 这么一段话:
dll注意下 要进行重定位

call $+5 ;机器码是 E8 00000000 00000000是相对地址
@@: pop ebx
sub ebx, @b

里边的@@是什么意思?后边的@b呢?为什么上边的call 不需要重定位,而变量需要重定位?
展开
 我来答
yyh001123
2011-09-18 · TA获得超过1.4万个赞
知道大有可为答主
回答量:8341
采纳率:66%
帮助的人:6266万
展开全部
@@是标号,pop ebx这条指令的标号
比如需要跳转到这条指令时,可以用LJMP @@或SJMP @@
@b是指间接地址
更多追问追答
追问
这里的@@和@b是必须写成这样吗?比如我把@@改为@a,@b改为@c或者XYZ
追答
@@这个可以改为其它,但最好不要和汇编中指令接近,并且最好是自己一看就能明白的。
比如start,@a不是很合适,也可以。
间接寻址@c可以,但XYZ不行,@后面必须是寄存器
另外汇编也分很多分支,比如51系列单片机的汇编@Ri,@A+PC,@DPTR等都可以,主要针对指针用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2011-09-18 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
楼主给出的汇编语言,是80x86系列CPU的32位的汇编语言。
楼上,回答者 yyh001123 解释的汇编:LJMP、SJMP,是单片机8031的汇编语言。
俩人说的不是一档子事。
追问
那你能不能解释一下@@和@b各表示什么意思啊?@@只是一个普通的LABEL么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wskjuf
2011-09-18 · TA获得超过1289个赞
知道大有可为答主
回答量:1731
采纳率:0%
帮助的人:1773万
展开全部
算了,我来回答,本来很简单的问题,搞出这么多的花样。以下是直接从masm 6.1文档摘录出来的:

Use two at signs (@@) followed by a colon (:) as an anonymous label. To jump to the nearest preceding anonymous label, use @B (back) in the jump instruction’s operand field; to jump to the nearest following anonymous label, use @F (forward) in the operand field.

The jump in the following example targets an anonymous label:

jge @F
.
.
.
@@:

The items @B and @F always refer to the nearest occurrences of @@:, so there is never any conflict between different anonymous labels.
---------------------------
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式