打印
[STM32F1]

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

[复制链接]
1696|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stly|  楼主 | 2021-9-12 07:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
equ与data

使用特权

评论回复
沙发
pengf| | 2021-9-12 07:49 | 只看该作者

data定义变量在DATA区,编译器会检查空间范围
equ是宏定义,只是简单替换

使用特权

评论回复
板凳
huangchui| | 2021-9-12 07:50 | 只看该作者
这个取决于你的工具是如何定义这些伪指令的。。。。

使用特权

评论回复
地板
wyjie| | 2021-9-12 07:52 | 只看该作者
data定义变量区的数据,equ只是符号,在预处理时就处理掉。

使用特权

评论回复
5
stly|  楼主 | 2021-9-12 07:55 | 只看该作者
equ的用法是符于后面的数据为别名,至于是地址还是立即数在程序中体现。

使用特权

评论回复
6
llljh| | 2021-9-12 07:57 | 只看该作者
没有用过汇编语言。

使用特权

评论回复
7
heweibig| | 2021-9-12 07:58 | 只看该作者
equ是宏定义,只是简单替换。。。

使用特权

评论回复
8
zhuhuis| | 2021-9-12 08:03 | 只看该作者
汇编没怎么使用,C语言更通用一些。

使用特权

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

使用特权

评论回复
10
zhuhuis| | 2021-9-12 08:07 | 只看该作者

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
stly|  楼主 | 2021-9-12 08:10 | 只看该作者
我提出的用法是在汇编程序当中的,还是想知道关于汇编多点 。

使用特权

评论回复
12
zhuhuis| | 2021-9-12 08:13 | 只看该作者
而data定义就是立即数 是定义变量区的数据,equ只是符号

使用特权

评论回复
13
pengf| | 2021-9-12 08:14 | 只看该作者
equ和data都是符号定义伪指令,但是它们对符号定义的数值的范围不同,equ可以是任何数值常量,data必须是00H~7FH范围的数值常量。数值的大小关系到是否符合指令的寻址方式,如果不符合,翻译(build)时就会报错。

使用特权

评论回复
14
xxmmi| | 2021-9-12 08:17 | 只看该作者
equ只是简单替换,纯汇编可以用equ定义变量地址,因为变量地址分配是编程者分配的,如果出现冲突那由编程者负责,解决。
data、ds、db这些伪指令则是给变量分配内存地址的意思,如果要跟其他语言混合编程,那么汇编语言必须用这些伪指令分配变量,严禁使用equ。
ss equ 20h  ; ss可能是变量地址,也可能是常数,总之编译器见到ss直接替换,并不会认为20h这个地址被占用了。
ss data 20h   ;把20h这个地址交给ss这个变量占用。
ss ds 1   ;把一个字节的变量交给ss这个变量占用,ss的地址在编译期间是不确定的,连接(link)的时候确定具体地址

使用特权

评论回复
15
jiajs| | 2021-9-12 08:19 | 只看该作者
不懂汇编语言

使用特权

评论回复
16
jlyuan| | 2021-9-12 08:21 | 只看该作者
没用过汇编程序

使用特权

评论回复
17
stly|  楼主 | 2021-9-12 08:23 | 只看该作者

明白了,多谢大家讨论这么多哈

使用特权

评论回复
18
xiaoqizi| | 2021-10-8 10:53 | 只看该作者
请问equ是什么啊

使用特权

评论回复
19
renzheshengui| | 2021-10-8 10:54 | 只看该作者
这是一个汇编指令

使用特权

评论回复
20
wakayi| | 2021-10-8 10:56 | 只看该作者
一个是指令 一个是存储数据的地址

使用特权

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

本版积分规则

433

主题

7058

帖子

0

粉丝