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

汇编程序的基本结构

楼主#
更多 发布于:2012-09-10 18:57

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

喜欢0 评分0
游客

返回顶部