6.1 源程序的基本组成
汇编语言源程序的组成部分有:模块、段、子程序和宏等。一个模块对应一个目标文件,当开发较大型的应用程序时,该程序可能由若干个目标文件或库结合而成的。有关模块和子程序的知识和宏在第7章介绍,有关宏的知识将在第9章中叙述。
6.1.1 段的定义
微机系统的
内存是分段管理的,为了与之相对应,汇编语言源程序也分若干个段来构成。8086
cpu有四个段寄存器,在该系统环境下运行的程序在某个时刻最多可访问四个段,而80386及其以后的CPU都含有六个段寄存器,于是,在这些系统环境下开发的运行程序在某个时刻最多可访问六个段。
不论程序在某个时刻最多能访问多少个段,在编程序时,程序员都可以定义比该段数更多的段。在通常情况下,一个段的长度不能超过64K,在80386及其以后系统的保护方式下,段基地址是32位,段的最大长度可达
4g。
段的长度是指该段所占的字节数:
、如果段是数据段,则其长度是其所有变量所占字节数的总和;
、如果段是代码段,则其长度是其所有指令所占字节数的总和。
在定义段时,每个段都有一个段名。在取段名时,要取一个具有一定含义的段名。
段定义的一般格式如下:
段名SEGMENT[对齐类型] [组合类型] [类别]
…;段内的具体内容
…
段名ENDS
其中:“段名”必须是一个合法的标识符,前后二个段名要相同。可选项“对齐类型”、“组合类型”和“类别”的说明作用请见6.3节中的叙述。
一个数据段的定义例子:
DATA1SEGMENT
word1DW1, 9078H, ?
byte1DB21, ’World’
DD12345678H
DATA1ENDS
一个代码段的例子:
CODE1SEGMENT
MOVAX, DATA1;把数据段DATA1的段值送AX
MOVDS, AX;把AX的值送给DS,即:DS存储数据段的段值
…
MOVAX, 4C00H
INT21H;调用
DOS功能,结束程序的运行
CODE1ENDS