打印
[应用相关]

汇编程序equ与data的区别是啥,求助

[复制链接]
2093|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feiqi1|  楼主 | 2016-12-15 20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

equ与data
沙发
androidbus| | 2016-12-15 20:13 | 只看该作者
data定义变量在DATA区,编译器会检查空间范围
equ是宏定义,只是简单替换

使用特权

评论回复
板凳
戈卫东| | 2016-12-15 20:14 | 只看该作者
这个取决于你的工具是如何定义这些伪指令的。。。。

使用特权

评论回复
地板
androidbus| | 2016-12-15 20:16 | 只看该作者
data定义变量区的数据,equ只是符号,在预处理时就处理掉。

使用特权

评论回复
5
litengg| | 2016-12-15 20:18 | 只看该作者
equ的用法是符于后面的数据为别名,至于是地址还是立即数在程序中体现。

使用特权

评论回复
6
qiangweii| | 2016-12-15 20:22 | 只看该作者
没有用过汇编语言。

使用特权

评论回复
7
shashaa| | 2016-12-15 20:24 | 只看该作者
equ是宏定义,只是简单替换。。。

使用特权

评论回复
8
xia00| | 2016-12-15 20:29 | 只看该作者
汇编没怎么使用,C语言更通用一些。

使用特权

评论回复
9
huangcunxiake| | 2016-12-15 20:31 | 只看该作者
记着一个原则:EQU只是作宏一样的替换,如果你不能确定一表达式中EQU的内容会不会被错误分析为(由于优先级或其它语法问题)其它信息,那就请(),以保证你得到正确的结果

使用特权

评论回复
10
huangcunxiake| | 2016-12-15 20:33 | 只看该作者
1、EQU 指令用于将一个数值或寄存器名赋给一个指定的符号名。
格式: 符号名 EQU 表达式
符号名 EQU 寄存器名
表达式必须是一个简单再定位表达式。
用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。
比如:
s equ bx+si
mov cx,[s]
那么上面两句代码相当于如下指令:
mov cx,[bx+si]
2、DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。
格式: 符号名 DATA 表达式
数值表达式的值在 0-255 之间,表达式必须是一个简单再定位表达式。
比如:
TEM DATA 50H
tem即是一个地址
DATA(数据地址赋值命令)。
功能:将数据地址或代码赋与规定的字符名称。
格式:WATER DATA 30H。
※EQU与DATA区别:
1)、EQU须先定义后使用,而DATA可无须如此。
2)、EQU可把汇编符号赋给一个字符名称,而DATA
伪指令不能。
3)、DATA可用于表达式,而EQU不行。

使用特权

评论回复
11
feiqi1|  楼主 | 2016-12-15 20:41 | 只看该作者
我提出的用法是在汇编程序当中的,还是想知道关于汇编多点 。

使用特权

评论回复
12
CallReceiver| | 2016-12-15 20:42 | 只看该作者
而data定义就是立即数 是定义变量区的数据,equ只是符号

使用特权

评论回复
13
sunweidong28| | 2018-3-19 07:51 | 只看该作者
本帖最后由 sunweidong28 于 2018-3-19 07:54 编辑

equ和data都是符号定义伪指令,但是它们对符号定义的数值的范围不同,equ可以是任何数值常量,data必须是00H~7FH范围的数值常量。数值的大小关系到是否符合指令的寻址方式,如果不符合,翻译(build)时就会报错。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1616

帖子

1

粉丝