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

4.2.2 字节变量的定义

定义字节变量的定义符为DB/BYTE(DefineByte),每个字节只占一个字节单元。其中:BYTE是MASM6.0及其以后版本的数据类型说明符,随后的其它类型说明符同此说明。

例如:

COUNTER DB 6

DB 'A', 'D',0Dh, '$'

TABLE DB 1, 3, 5, 7, 9, 11

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

06

41

44

0D

24

01

03

05

07

09

0B

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', '.'

显然,前者的说明要比后者方便得多,所以,在程序中都采用前者的书写方式。

上页:上一课 下页:下一课

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号