我是菜鸟啊,今天在论坛问大家一个简单(对大虾来说)但困惑我好几天的问题。请问EQU和DATA在使用的时候有什么区别啊?详细点啊!我问了好多人都不知道啊!
DATA与EQU的区别在于:用DATA定义的标志符汇编时作为标号登记在符号表中,所以可以先使用后定义;而用EQU定义的标志符,因不登记在符号表中,必须先定义后使用。
在使用时除了上述的区别外,具体到用是应该注意什么?
DATA是用于绝对定位RAM,或定义寄存器地址 下面是Keil A51文档中的内容 ?DT?myvar SEGMENT DATA ; define a SEGMENT of class DATA RSEG ?DT?myvar VALUE: DS 1 ; reserve 1 BYTE in DATA space
IO_PORT2 DATA 0A0H ; special function register VALUE2 DATA 20H ; absolute memory location
一般情况下使用EQU是没有什么限制的,但是使用DATA时,必须保证绝对定位的RAM地址不可以与其它模块中的RAM地址重叠,所以必须在段定位中指RAM的可使用范围。 用法最基本的区别就是EQU定义的是常量,DATA定义的不是常量。所以使用EQU定义的值时必须加#,因为他们是立即数。
data 相当于 c的变量定义
equ 相当与 c的宏定义
回答的相当牛B,我懂了!谢谢!