灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:5022回复:0

[系统教程]经典汇编语言教程:4.2.2 字节变量的定义

楼主#
更多 发布于:2012-09-23 08:58
 
 
典汇编语言教程:4.2.2 字节变量的定义·内容正文
 
定义字节变量的定义符为DB/BYTE(DefineByte),每个字节只占一个字节单元。其中:BYTE是MASM6.0及其以后版本的数据类型说明符,随后的其它类型说明符同此说明。
例如:
COUNTERDB 6

DB 'A', 'D',0Dh, '$'
TABLEDB 1, 3, 5, 7, 9, 11
上面的定义语句经汇编后所产生出的内存单元分配情况如图4.1所示。图中的数据是用十六进制表示的(以后也如此,不再说明),由引号括起来的字符在内存中是存放其ASCII码值。所以,'D'和0Dh是不同的,前者是字符'D',后者是数值12的十六进制编码。


06

41

44

0D

24

01

03

05

07

09

0B

图片:UP_ARROW.gif

图片:UP_ARROW.gif

COUNTERTABLE
图4.1 内存单元的分配情况示意图
注意:在上例中,说明语句“DB'A', 'D', 0Dh, '$'”之前并没有给出变量名,但我们可以从前面的变量名COUNTER一直往后数,或从TABLE往前数,来访问某存储单元,因为它们是一片连续的存储单元,这和高级语言的变量定义有点区别的。在高级语言中,我们一定要用某个标识符来说明变量,也必须用该变量名来访问其所对应的存储单元。
用定义符DB还可定义一种特殊的数据形式——字符串。在定义字符串时,必须用成对的单引号或双引号把所要的字符括起来,括号内字符的ASCII码将依次存放在相应的字节单元内。例如:
MSG1 DB 'I am a student.'
该说明语句所对应的存储单元分布如下所示。为了看起来方便,并没有用字符的ASCII码来存放在相应的存储单元内,而直接用该字符,请不要引起误解。
'I'' ''a''m'' ''a'' ''s''t''u''d''e''n''t'
上面的例子也可改写为另一种等价的语句:
MSG1 DB 'I', ' ', 'a', 'm', ' ', 'a', ' ', 's', 't', 'u', 'd', 'e', 'n', 't', '.'
显然,前者的说明要比后者方便得多,所以,在程序中都采用前者的书写方式。

喜欢0 评分0
游客

返回顶部