[应用相关] 汇编程序equ与data的区别是啥,求助

[复制链接]
2558|12
 楼主| feiqi1 发表于 2016-12-15 20:12 | 显示全部楼层 |阅读模式
androidbus 发表于 2016-12-15 20:13 | 显示全部楼层
data定义变量在DATA区,编译器会检查空间范围
equ是宏定义,只是简单替换
戈卫东 发表于 2016-12-15 20:14 | 显示全部楼层
这个取决于你的工具是如何定义这些伪指令的。。。。
androidbus 发表于 2016-12-15 20:16 | 显示全部楼层
data定义变量区的数据,equ只是符号,在预处理时就处理掉。
litengg 发表于 2016-12-15 20:18 | 显示全部楼层
equ的用法是符于后面的数据为别名,至于是地址还是立即数在程序中体现。
qiangweii 发表于 2016-12-15 20:22 | 显示全部楼层
没有用过汇编语言。
shashaa 发表于 2016-12-15 20:24 | 显示全部楼层
equ是宏定义,只是简单替换。。。
xia00 发表于 2016-12-15 20:29 | 显示全部楼层
汇编没怎么使用,C语言更通用一些。
huangcunxiake 发表于 2016-12-15 20:31 | 显示全部楼层
记着一个原则:EQU只是作宏一样的替换,如果你不能确定一表达式中EQU的内容会不会被错误分析为(由于优先级或其它语法问题)其它信息,那就请(),以保证你得到正确的结果
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不行。
 楼主| feiqi1 发表于 2016-12-15 20:41 | 显示全部楼层
我提出的用法是在汇编程序当中的,还是想知道关于汇编多点 。
CallReceiver 发表于 2016-12-15 20:42 | 显示全部楼层
而data定义就是立即数 是定义变量区的数据,equ只是符号
sunweidong28 发表于 2018-3-19 07:51 | 显示全部楼层
本帖最后由 sunweidong28 于 2018-3-19 07:54 编辑

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

本版积分规则

424

主题

1616

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部