Lesson8和9微机原理与应用

上传人:宝路 文档编号:47997584 上传时间:2018-07-08 格式:PPT 页数:137 大小:1.76MB
返回 下载 相关 举报
Lesson8和9微机原理与应用_第1页
第1页 / 共137页
Lesson8和9微机原理与应用_第2页
第2页 / 共137页
Lesson8和9微机原理与应用_第3页
第3页 / 共137页
Lesson8和9微机原理与应用_第4页
第4页 / 共137页
Lesson8和9微机原理与应用_第5页
第5页 / 共137页
点击查看更多>>
资源描述

《Lesson8和9微机原理与应用》由会员分享,可在线阅读,更多相关《Lesson8和9微机原理与应用(137页珍藏版)》请在金锄头文库上搜索。

1、微机原理及应用B第第4 4章章 汇编语言程序设计汇编语言程序设计第第4 4章章 汇编语言程序设计汇编语言程序设计4.1 4.1 汇编语言语法汇编语言语法4.2 4.2 汇编语言程序实现汇编语言程序实现4.3 4.3 汇编语言程序设计方法及应用汇编语言程序设计方法及应用4.4 4.4 汇编语言程序设计举例汇编语言程序设计举例重点: 常用的符号指令、伪伪指令、运算符和DOS系统统功能调调用;汇编汇编语语 言的四种程序设计设计 方法:顺顺序、分支、循环环程序设计设计 以及子程序设计设计难难点: 符号指令、伪伪指令、运算符和DOS系统统功能调调用;确定算法,合理分配内存工作单单元;汇编语汇编语 言程序

2、设计设计 机器语言、汇编语言和高级语言比较一览表名 称特 点缺 点优 点适用场合机器语言用机器码书写 指令 不易被人们识别和读写 。难写、难读、难交流 计算机可以 直接识别和 执行无汇编语言 用符号书写指 令(用助记符 表示操作码, 特殊符号表示 操作数) 机器不能直接识别;程 序员必须了解机器的结 构和指令系统,不易推 广和普及;不能移植, 不具备通用性 易为人们识 别、记忆和 读写实时控制 系统 高级语言 用以英语为基 础的语句编程 机器不能直接识别;执 行时间长 易于推广和 交流;不依 赖于机器, 具有通用性 科学运算 和数据处 理 汇编语言(Assembly Language)是一种低

3、级语言,从本质上讲它可以说就是一种机器可以直接识别的二进制语言。然而,由于 CPU 生产厂商为了方便用户使用汇编语言,为每一条二进制指令均设置了对应的助记符。这样一来,却给机器识别带来了困难。因此,许多软件生产厂商为汇编语言开发了汇编器(Assembler,一种程序),以将供人识别的汇编语言翻译成供机器识别的二进制流。另外,由于一个程序常常是由多个模块组成的,只有将所有模块装配在一起才能构成一个完整的程序。这就是连接器(Linker,也是一种程序)所完成的任务。4.1 汇编语言语法综上所述,一个汇编语言所程序的生成过程如下图所示。源程序 *.asm目标文件 *.obj可执行文件 *.exe编辑

4、器汇编器连接器(一)汇编语言源程序结构为了了解汇编语言程序的结构,先参考教材中 P103、例题 4.1。应当指出的是,汇编语言源程序对大小写字母不敏感,源程序中的字符大写、小写均可,但不建议大小写混写。4.1.1 源程序的结构及组成汇编语言源程序格式如下:1、汇编语言源程序由一条一条汇编语句组成。2、每条汇编语句独占一行,以分号结束。3、典型的汇编语句由四部分组成:标号:操作码 操作数;注释DATA SEGMENT ; 1ADW123; 2BDW456; 3SUM DW?; 4 DATA ENDS ; 5CODE SEGMENT ; 6 MAINPROCFAR; 7 ASSUME CS:COD

5、E, DS:DATA ; 8 START:PUSHDS; 9 MOVAX, 0; 10 PUSHAX; 11 MOVAX, DATA; 12 MOVDS, AX ; 13MOV AX, A; 14 ADDAX, B; 15 MOVSUM, AX; 16 RET; 17 MAINENDP; 18 CODE ENDS ; 19 END START ; 20(1) 段式结构与高级语言不同,汇编语言源程序采用段式结构,即不同性质的程序要素必须书写成相应的段。例如:行 1 至行 5、行 6 至行19 就分别定义了两个段。前者为数据段,后者为代码段,它们的段名分别为 DATA 和 CODE。应当说明的是:

6、段名是任意的,用户可以根据自己的喜好取任何名字。因此在行 8 有一条 ASSUME 伪指令(下面介绍),它明确地声明了不同的段所对应的段名。一般而言,在一个语言程序中,代码段是必不可少的。根据需要,用户可以定义相应的数据段(相当于高级语言的变量说明)、附加段以及自己的栈段。(2) 语句与高级语言相同,程序是由一条条语句组成的。前面讲过,汇编语言中的指令就是语句。除了第 3 章中所介绍的指令集外,为了方便程序的书写以及汇编器的处理,汇编器本身还提供了伪指令(Pseudo Instruction)和宏指令(Macro Instruction)。因此,在源程序中常常还有伪指令语句和宏指令语句。a.

7、指令语句指令语句的一般格式为(方括号括起的内容为可选项,下同):标号: 操作码 操作数 ; 注释其中:标号实际上就是一个用符号表示的地址号码。在 3.4.5 中我们已经了解到,程序中若有转移,则必定涉及到标号。注释是用来说明语句的作用或一段程序的功能的。注释以分号开始,“回车” 结束。一般讲,注释应当成为源程序中的重要组成部分,同学们应当养成在源程序中加注释的习惯。b. 伪指令语句伪指令不属于微处理器的指令系统,它们是汇编器所提供并能够正确识别的指令。伪指令主要用来指示汇编器如何理解并正伪指令主要用来指示汇编器如何理解并正确处理源程序中的指令,它并不生成代码。确处理源程序中的指令,它并不生成代

8、码。伪指令语句的一般格式为: 名字/变量 伪指令 参数; 注释c. 宏指令语句所谓宏(Macro),是指一系列指令的集合。程序中可以将一段多处需要使用的多条指令定义成一个宏,用一个名字(宏)来代表它们。当程序中需要这些指令时,直接书写出宏名即可。而当汇编器在对源程序进行汇编时,一但遇到宏,就会将它展开(即还原成多条指令),然后再进行汇编。宏指令语句的一般格式为: 标号: 宏指令 参数1 , ; 注释 其中:省略号表示可以带更多的参数。(3) 设置操作系统的功能一旦一个程序执行完毕,就必须将对处理器的控制权返还给操作系统。对高级语言源程序而言,这一功能由编译器或解释器来完成。而对于汇编语言程序,

9、这一功能则必须在源程序中明确给出。在上述例子中,行 7 定义了一个名字为 MAIN 的远过程,而在行 17 则利用一条 RET 指令从该过程中返回。应当强调指出的是,必须保证程序返回的正确性。由于 MAIN 是一个远过程,操作系统对它的调用属于段间调用。因此,在返回后不仅要求保证 IP 的值正确,还得保证(操作系统中) CS 的值是正确的。为此,源程序中行 9 将 DS 的值入栈,同时在行 10、11 中又向栈中压入了一个 16 位的 0。(1) 命名规则汇编语句中名字的命名规则如下:a. 组成名字的合法字符为:字母、数字及一些特殊符号(:, _,$);b. 名字长度不大于 31 个字符;c.

10、 名字必须以字母起头;d. 不得将保留字(如指令、伪指令)用作名字。(二)汇编语句中的名字(2) 名字及其属性标号 变量名 段名 过程名 符号常量名1)标号名标号之后加 “:”使用标号有三种属性:(标号实际代表一个地址)段属性-段地址偏移量属性-偏移地址类型属性-段内引用(NEAR) 段间引用(FAR)33 BD D8 000103 C3EB 17.8B DBEB DE0000 0002000500070009 00200022XOR BX,BX START: MOV AX,1ADD AX,BXJMP SHORT NEXT.NEXT: MOV BX,AXJMP SHORT STARTIP机器码

11、助记符例【3-52】 短转移00242)变量名变量代表的是存储器中的一个数据区的名字,有五种属性:段属性-变量所代表的数据区所在段的段基址偏移量属性-变量所代表的数据区首字节所在段的段内偏移地址类型属性-字节、字、双字、四字等长度属性-变量所代表的数据区中数据元素的个数规模属性-变量所代表的数据区中数据所占空间的大小,以字节计0AH64H00H00H01H48H6FHLF2000:45H60H段属性- 2000H偏移量属性- 0045H类型属性- 字节、 字、 双字、四字长度属性- 8 4 2 1规模属性- 8 8 8 83)段名源程序在进行汇编连接时,系统会分配给段一个段基址。段名可以作为段

12、基址被引用,即通过段名给段寄存器赋值。CODECODESEGMENT; 6MAINPROCFAR; 7ASSUME CS:CODE, DS:DATA ; 8START:PUSHDS; 9MOVAX, 0; 10PUSHAX; 11MOVAX, DATA; 12MOVDS, AX ; 13 4)过程名源程序在进行汇编连接目标程序时,系统会分配给过程名一个地址,即该过程第一条指令所在内存单元的地址,被称为“过程的入口地址”。5)符号常量名符号常量名用于代替一个常数,以增加程序的可读性及通用性。宏汇编程序(一种常用的汇编器)MASM 提供了几十条伪指令,它们被分为 10 类:数据定义类、符号定义类、

13、段定义类、过程定义类、宏处理类、模块定义类、条件类、列表类和其它。4.1.2 汇编语言伪指令伪指令与机器指令的区别: 机器指令在程序运行期间由CPU来执行;伪指令是在汇编程序对源程序汇编期间由汇编程序处理 汇编完成后,每条机器指令产生一一对应的目标代码,而伪指令则不产生与之相应的目标代码。数据定义类伪指令用来为数据分配存储单元,定义变量名等。这一类伪指令的一般形式为: 变量名 伪指令操作数 , ;注释 其中:变量名即用户为变量所起的名字;操作数即与伪指令相对应的数据,它可以是数值常量、字符常量、字符串常量、符号常量、符号 “?”、DUP(Duplicate)。(一)数据定义伪指令DATA1 D

14、W 100, 100H CHAR$ DB How are you!数据定义伪指令主要有以下 5 种:DB,即 Define Byte用来定义字节,其后的每一个操作数均占一个字节;DW,即 Define Word用来定义字,其后的每一个操作数均占两个字节;DD,即 Define Double Word用来定义双字,其后的每一个操作数均占四个字节;DQ,即 Define Quad Word用来定义长字,其后的每一个操作数均占八个字节;DT,即 Define Ten Byte用来定义十字节长的变量,其后的每一个操作数均占十个字节。操作数说明:a. 数值常量 可以用二、八、十、十六进制表示,默认为十进制;b. 字符/字符串常量 必须用单引号括起来,被储存的是该字符的A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号