MASM汇编语言程序设计

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

第5章 汇编语言程序设计
第5章 汇编语言程序设计
5.1 汇编语言的基本概念 5.2 汇编语言源程序的格式 5.3 伪指令语句 5.4 宏指令语句 5.5 汇编语言程序的上机过程 5.6 汇编语言程序设计的基本方法
第5章 汇编语言程序设计
5.1 汇编语言的基本概念
在学习了计算机和微处理器的组成 以及指令系统后,就具备用汇编语言进 行程序设计的能力了。汇编语言是一种 面向机器的程序设计语言,其基本特征 是用一组字母、数字和符号来代替二进 制编码的机器指令和数据。
第5章 汇编语言程序设计
5.1 汇编语言的基本概念
程序设计语言是专门为计算机编程所配置的语 言。它们按照形式与功能的不同可分为三种,即机器 语言、汇编语言和高级语言。 1. 机器语言 机器语言(Machine Language)是由0和1二进 制代码书写和存储的指令与数据。它的特点是能被机 器直接识别与执行;程序所占内存空间较少。其缺点 是难认、难记、难编、易错。
第5章 汇编语言程序设计
2. 汇编语言 汇编语言(Assembly Language)使用指令的助 记符、符号地址、标号等书写程序的语言,简称符号 语言。它的特点是易读、易写、易记。其缺点是不能 为机器所直接识别。 3. 高级语言 高级语言(High Level Language)是脱离具体 机器(即独立于机器)的通用语言,不依赖于特定计 算机的结构与指令系统。
第5章 汇编语言程序设计
START: MOV MOV MOV MOV CTC MOV ADC INC DEC JNZ MOV INT ENDS END AX, DATA DS, AX CX, 5 SI, 0 ;将DS初始化为数据段 ;首地址的段值DATA ;循环次数送CX ;置SI初值为0
LOOPER:
序中也要求分段组织指令、数据和堆栈,以便将源程序汇编成 为目标程序后,可以分别装入存储器的相应段中。
第5章 汇编语言程序设计 段可以从性质上分为:数据段、代码段、堆栈段和附加段。
代码段和数据段不可缺少,堆栈段和附加段可根据需要设置。在 上面的简单源程序中只有两个逻辑段,一个逻辑段的名字是 DATA,其中存放着与程序有关的数据,称为逻辑数据段;另一 个逻辑段的名字是CODE,其中包含着程序的指令,称为逻辑代 码段。每个段内均有若干行语句(STATEMENT),因此,可以说 一个汇编源程序是由一行一行的语句组成的。
AL, DATA2[SI] DATA1[SI],AL ;与被加数相加 SI CX LOOPER AH, 4CH ;DOS功能调用语句,机器将结束 21H ;本程序运行,返回DOS START ;源程序结束
CODE
第5章 汇编语言程序设计
• STACK SEGMENT

例5-2 编写一个两字相加的程序。
第5章 汇编语言程序设计
教学内容
本章以Microsoft公司的宏汇编程序MASM为背景,介绍 面向80x86的汇编语言程序设计方法。包括汇编语言源程序的 格式、伪指令、宏指令以及顺序结构、分支结构、循环结构、 过程调用等汇编语言程序设计方法。具体内容如下: 1、汇编语言源程序的格式及汇编语言上机过程 2、伪指令 3、宏指令 4、汇编语言程序设计的基本方法(包括顺序程序、分支程序、 循环程序、子程序)
第5章 汇编语言程序设计
⑵现在的微机系统中,底层的一些功能仍然靠 汇编语言程序来实现。例如机器的自检、系统初始化、 实际的输入输出操作,至今仍然是用汇编语言编制的 程序来完成。 ⑶汇编语言程序的效率通常高于高级语言程序。 所以在节省内存空间和提高程序运行速度的重要场合, 如实时控制,常常使用汇编语言来编制的。 鉴于以上理由,现在许多高级语言都设置有与 汇编语言程序接口的功能,以便于提高高级语言程序 的效率。
第5章 汇编语言程序设计
学习要求
汇编语言程序设计是“微型计算机原理”课程非 常重要的内容之一。通过本章学习,应该达到如下 要求:
1、熟练掌握汇编语言格式及调试方法。 2、掌握子程序和宏指令的概念、定义及其调用方法。 3、掌握DOS调用和BIOS调用的方法。 4、熟练掌握顺序程序、分支程序、循环程序设计的基本方法 和一般技巧。
第5章 汇编语言程序设计
源程序的结构特点
• (1)汇编语言程序通常由若干段组成,段由伪指令 SEGMENT与ENDS定义,各段顺序任意,段的数目按需要 确定,原则上不受限制。 • (2)段由若干语句组成,语句以指令为主体而构成。一条 语句写在一行上,书写时语句的各部分应尽量对齐 • (3)汇编语言程序中至少要有一个启动标号,作为程序开 始执行时目标代码的入口地址。启动标号常用START、 BEGIN、MAIN等命名。 • (4)为增加程序的可读性,可在汇编语言语句“;”后加 上注释。
• •
• • • • Fra Baidu bibliotek •
– ┇ STACK ENDS
DATA SEGMENT


DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS: DATA, SS:STACK START: …

CODE

ENDS END START
第5章 汇编语言程序设计
5.2.1 分段结构 由上面的例子可以看出,汇编语言源程序的结构是分段结
第5章 汇编语言程序设计
5.2 汇编语言源程序的格式
例5.1 要求将两个5字节十六进制数相加,可以编写出以下 汇编语言源程序。
DATA SEGMENT ; 定义数据段,DATA为段名
DATA1 DB 0F8H, 60H, 0ACH, 74H, 3BH ;给数赋初值
DATA2 DB 0C1H, 36H, 9EH, 0D5H, 20H DATA ENDS ;数据段结束 CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA ;用ASSUMW伪指令定义 ;各段寄存器的内容
构形式,一个汇编语言源程序由若干段(SEGMENT)组成,每个
段以SEGMENT语句开始,以ENDS语句结束。整个源程序的结 尾是END语句。 这里所说的汇编语言源程序中的段与前面讨论的CPU管理 的存储器的段,既有联系,又在概念上有所区别。我们已经知
道,微处理器对存储器的管理是分段的,因此,在汇编语言程
◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ DSEG SEGMENT ;定义数据段 DATA1 DW 1234H ;定义被加数 DATA2 DW 5678H ;定义加数 DSEG ENDS ;数据段结束 ESEG SEGMENT ;定义附加段 SUM DW 2 DUP(?) ;定义存放结果区 ESEG ENDS ;附加段结束 CSEG SEGMENT ;定义代码段 ;下面的语句说明程序中定义的各段分别用哪个段寄存器寻址 ASSUME CS:CSEG,DS:DSEG,ES:ESEG START: MOV AX,DSEG ;START为程序开始执行的启动标号 MOV DS,AX ;初始化DS MOV AX,ESEG MOV ES,AX ;初始化ES LEA SI,SUM ;存放结果的偏移地址送SI MOV AX,DATA1 ;取被加数 ADD AX,DATA2 ;两数相加 MOV ES:[SI],AX ;和送附加段的SUM单元中 HLT CSEG ENDS ;代码段结束 END START ;源程序结束
第5章 汇编语言程序设计
为什么要用汇编语言编写程序
凡是学过一种程序设计高级语言的人,都会有高 级语言“易学易用”的感觉,这是因为高级语言的语句 是面向数学语言和自然语言的,因此容易接受、掌握。 相对来说汇编语言编制程序比高级语言要困难些。既然 如此,为什么还要学习和使用汇编语言呢?主要有以下 几点: ⑴汇编语言是机器语言的符号表示语言,因此, 程序设计人员可以充分利用机器硬件的全部功能,发挥 机器的长处。
相关文档
最新文档