微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求教汇编高手,汇编变量定义

求教汇编高手,汇编变量定义

时间:10-02 整理:3721RD 点击:
求教汇编高手,汇编中变量的定义,以前都是用equ直接分配地址给变量,看网上说这样不好,试了一下用 db,dw 定义,
可为什么不能通过,data    segment就有报错,编译软件使用的是keil uv2,是编译软件的问题吗?
data    segment
buffer1 db 23 dup(?)
buffeer db 0ah,0dh,'$'
buffer2 db 30 dup(?)
buffer3 db 8 dup('0')
count   db 5
handle  dw ?
del     db 8 dup('0')
x       db ?
data    ends

EQU 不是地址分配,是等价定义语句,定义的是啥等价于啥;
只有 DW DB DD 这些语句才是带地址分配的语句,本身的意义只是给指定类型和长度的数据保留地址空间;
实际分配地址是在链接时完成的;
data segment 只能定义数据,不能定义常数,也就是说你只能用问号保留地址空间,不能指定其内容;
要定义有确定内容的数据,应该在 code segment 内定义

谢谢解答,但还是不明白,上面的程序段编译器报的是语法错误,DATA   SEGMENT语法存在问题吗?可从网上下的实例都是这样写的。而buffer1 db 1  也是报语法错误,如果改成buffer1:  db 1就可以通过,怎么跟网上的实例不一样呢?

你说的这个问题是由于编译器不同造成的,不同软件商提供的编译器细节上有区别很正常;
甚至同一厂家为了和其他厂家的兼容性,会在新版本中修改旧版中的既定细节,引起代码重用出错的问题。

了解了,谢谢解答!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top