汇编中标号的疑问

如果现在定义一个abcsegment那么这几条指令有何区别leaax,abcmovax,abcmovax,offsetabc... 如果现在定义一个abc segment
那么这几条指令有何区别
lea ax,abc
mov ax,abc
mov ax,offset abc
展开
 我来答
百度网友dd2a4ae
2013-02-06 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1636万
展开全部
你的程序中,abc作为段定义的段名,它的数据类型是一个16位的可重定位的立即数,其具体值在程序装入内存时由装入程序确定。

所以,你的三条指令,就是这么使用立即数会有什么结果的问题。

1. LEA指令是装入有效地址指令,后面的操作数应当是一个内存操作数。
所以,lea ax, abc是语法上错误的指令,汇编时,汇编程序会直接报告语法错误。

2. mov ax, abc 很简单,就是将程序装入时abc这个段的段地址作为立即数传送到ax中。

3. mov ax, offset abc 的结果是将0送入ax。因为offset算符是取内存操作数的有效地址,而对于你这里的立即数abc就返回一个0当offset运算的结果。

最后给你提一个建议:
学习编程,要学习和练习正确的程序。
故意制造和尝试无意义的错误,得不到有意义、有价值的结果,除了浪费时间,还有可能将自己的概念搞得更乱。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式