汇编语言--第四章-简述.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1 汇编语言的特点
采用汇编语言进行程序设计的优点:
• 可充分利用机器的硬件功能和结构特点,加快程序的 执行速度,减少目标程序所占用的存储空间。 • 常用来编写实时控制程序、实时通信程序,有时也用 来编制某些系统软件程序。
汇编语言的缺点:
1. 编程效率低(与人们描述计算过程的需要差距大); 2. 与机器硬件的具体结构联系过于紧密 ——在一种结构的机器上开发的程序极难移植到另 一种不同结构的机器上去。
指令语句是可执行语句,其格式为:
[名字:]指令操作助记符[操作数表达式1[,操作数表达式2]][; 注释]
其中,指令操作助记符(指令名)是指令语句中不可缺 少的主体,其余部分(方括号中的内容)有时可省略。 指令语句中的名字只能是标号。 注释以分号开头,分号右边的内容将被汇编程序忽 略。例 : L: ADD AX,BX ;注释
;返回DOS
;代码段结束 ;模块结束
4.2 汇编语言的程序结构
从前面的例子中可以看到汇编语言源程序的结构特点: 汇编语言是分段结构的形式。
各个逻辑段以SEGMENT语句开始,以ENDS语句结束。通常会 由数据段、堆栈段、代码段构成. 1.数据段用以存放常数、变量等程序需要对其进行操作的数据。 2.堆栈段用来在内存中开辟堆栈区,以便在中断、子程序调用时 使用。 3.代码段包含了程序要执行的指令。
(2) 变量
• 编程时只能确定其初始值,程序运行期间可修改其值的数据对 象称为变量。变量是存储单元中的数据,通常都定义在数据段 (DS)和附加段(ES)。 • 变量由伪指令说明符DB、DW、DD等定义。需要时可给变量 的地址取名字,变量名就是变量地址的名字,可称为变量的符 号地址。 • 例如, 在下列伪指令语句中, A DB 50,60,70,80 B DW 50,60,70,80 C DD 50,60,70,80 • 用DB、DW、DD说明符各定义了4个变量,并给出了每个变量 的初始值。
BEGIN和 END BEGIN构成了汇编程序的主模块部分, 由下面的几个部分组成:
汇编主模块部分的组成

必须用ASSUME伪指令告诉汇编程序,某一段地址应该放入哪一个段 寄存器。这样对源程序模块进行汇编时,才能确定段中各项的偏移量。 DOS的装入程序在执行时,将把CS初始化为正确的代码段地址,把SS 初始化为正确的堆栈段地址,在源程序中不需要再对CS、SS进行初始 化。但是在源程序中需要对DS、ES进行初始化:
汇编程序示例
DATA SEGMENT NOTES DB ‘The result is :’ , ’$’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: PUSH DX XOR AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV DX,OFFSET NOTES MOV AH,9H INT 21H MOV AH,4C INT 21H CODE ENDS END BEGIN ;数据段 ;定义字符串变量NOTES ;代码段 ;必须用ASSUME告诉汇编程序段地址和 ;段寄存器的对应关系 ;这3条指令表明程序结束时可用RET ;直接返回DOS,也可以省去。 ;DOS装入程序会自动初始化CS和SS ;需要我们对DS、ES初始化。 ;调用DOS中断,显示提示信息字符串
1. 汇编语言的标识符 类似于其它语言,由字母、数字构成,以字母开头。 在汇编中,指常量、变量、标号、段名、过程、 结构等的名字。 2. 汇编语言的操作对象( 数据类型) (1) 常数、常量 编程时已经确定其值,程序运行期间不会改变其值 的数据对象称为常数。 8086/8088CPU允许定义四种形式的常数: 整数、 字符串、“组合BCD码数”和实数(浮点数),但只 能处理整数、字符串、“组合BCD码数”,不能处 理实数(浮点数)。
Biblioteka Baidu
伪指令语句是说明性语句,其格式为: [名字]伪指令说明符[参数表达式1[,参数表达式2
[,…… ]]][;注释]
其中,伪指令说明符(伪指令名)是伪指令语句中不可 缺少的主体,其余部分(方括号中的内容)有时可省略。 名字可为段名、过程名、变量名、符号名(或常量名)、 宏名、结构名、记录名等。 例: A DB 20H,30H ; 注释
常数表达式的名字称为常量。
(程序员给出的一个名或助记名作为一个确定值的标 识, 其值在程序执行过程中保持不变。) 常量可用伪指令说明符“EQU”或“=”定义。 例如,A EQU 7或 A = 7都可将常量A的值定义为常 数7。 两者区别:伪指令说明符EQU左边的符号名不允许重 复定义,而“=”左边的符号名可以重复定义。 即,A EQU 7 可以:A=7 A EQU 8 (不允许) A=8
第四章 汇编语言简述
Assemble Language
• 汇编语言是一种面向机器的程序设计语言,是一种用符号表示 的低级程序设计语言(机器语言的符号化描述),通常是为特 定计算机或计算机系列专门设计的。 • 用汇编语言编写的程序不能由机器直接执行,而必须经汇编程 序翻译成机器语言程序。汇编语言指令与翻译成的机器语言指 令之间基本是一一对应的关系。 • 汇编过程示意:
汇编程序负责计算伪指令语句中表达式的值,解释
伪指令语句的含义并遵照“执行”,但并不产生机器 代码。 汇编程序负责计算指令语句中表达式的值,并将汇 编指令翻译成机器指令代码。 指令语句经汇编后,在可执行程序运行期间由CPU解 释,并由CPU按指令的要求完成各种运算与操作。
4.3.2 汇编语言的标识符
MOV MOV AX,DATA DS,AX

在DOS环境下,通常采用DOS的4CH号中断功能调用使汇编程序返回 DOS,即: MOV AH,4CH INT 21H
4.3.1 汇编语言的语句格式
伪指令语句和指令语句
汇编语言源程序中除了包含真正的指令外,还应包
含说明性的“指令”。这些说明性的“指令”是面向 汇编程序和连接程序的,称为伪指令。 宏汇编程序5.0版(MASM V5.0)规定,汇编语言源程 序的每行只能写一个语句: 指令语句或伪指令语句。 行长不能超过128个字符。每个语句最多可由四个字 段组成: 名字字段、操作字段、操作数字段和注释字 段。
相关文档
最新文档