汇编程序equ与data的区别

[复制链接]
973|9
 楼主| yszong 发表于 2016-11-18 23:57 | 显示全部楼层 |阅读模式
dirtwillfly 发表于 2016-11-19 14:58 | 显示全部楼层
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不行。
dengdc 发表于 2016-11-19 21:18 | 显示全部楼层
data定义变量在DATA区,编译器会检查空间范围
equ是宏定义,只是简单替换
jiahy 发表于 2016-11-19 21:23 | 显示全部楼层
data定义变量区的数据,equ只是符号,在预处理时就处理掉。
 楼主| yszong 发表于 2016-11-19 21:25 | 显示全部楼层

楼上们说的是在c语言当中的用法。我提出的用法是在汇编程序当中的。
jiaxw 发表于 2016-11-19 21:27 | 显示全部楼层
equ的用法是符于后面的数据为别名,至于是地址还是立即数在程序中体现。而data定义就是立即数。
 楼主| yszong 发表于 2016-11-19 21:29 | 显示全部楼层
好的,我明天去单位试一下,多谢各位大侠了哈,结贴了先
youtome 发表于 2016-11-19 22:33 | 显示全部楼层
没有用过汇编语言。
youtome 发表于 2016-11-19 22:35 | 显示全部楼层
C语言更通用一些。
Ryze 发表于 2016-11-23 21:37 | 显示全部楼层
equ是宏定义,只是简单替换
您需要登录后才可以回帖 登录 | 注册

本版积分规则

830

主题

11379

帖子

4

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