经典汇编语言教程:第6章 程序的基本结构

第6章 程序的基本结构

在前面几章,我们分别介绍了用汇编语言进行程序设计所需要的几个最基本的知识:内存单元的寻址方式变量定义各种汇编指令格式。在掌握了这些基本内容之后,就需要学习如何把它们组成一个完整的汇编语言程序。

6.1 源程序的基本组成

汇编语言源程序的组成部分有:模块、段、子程序等。一个模块对应一个目标文件,当开发较大型的应用程序时,该程序可能由若干个目标文件或库结合而成的。有关模块和子程序的知识和宏在第7章介绍,有关宏的知识将在第9章中叙述。

6.1.1 段的定义

微机系统的内存是分段管理的,为了与之相对应,汇编语言源程序也分若干个段来构成。8086CPU有四个段寄存器,在该系统环境下运行的程序在某个时刻最多可访问四个段,而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

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

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

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