文档详情

Lesson8及9微机原理与应用.ppt

发布:2017-04-29约2.11万字共137页下载文档
文本预览下载声明
微机原理及应用B;第4章 汇编语言程序设计;机器语言、汇编语言和高级语言比较一览表; 汇编语言(Assembly Language)是一种低级语言,从本质上讲它可以说就是一种机器可以直接识别的二进制语言。然而,由于 CPU 生产厂商为了方便用户使用汇编语言,为每一条二进制指令均设置了对应的助记符。这样一来,却给机器识别带来了困难。因此,许多软件生产厂商为汇编语言开发了汇编器(Assembler,一种程序),以将供人识别的汇编语言翻译成供机器识别的二进制流。另外,由于一个程序常常是由多个模块组成的,只有将所有模块装配在一起才能构成一个完整的程序。这就是连接器(Linker,也是一种程序)所完成的任务。;综上所述,一个汇编语言所程序的生成过程如下图所示。; (一)汇编语言源程序结构 为了了解汇编语言程序的结构,先参考教材中 P103、例题 4.1。 应当指出的是,汇编语言源程序对大小写字母不敏感,源程序中的字符大写、小写均可,但不建议大小写混写。;DATA SEGMENT ; 1 A DW 123 ; 2 B DW 456 ; 3 SUM DW ? ; 4 DATA ENDS ; 5; (1) 段式结构 与高级语言不同,汇编语言源程序采用段式结构,即不同性质的程序要素必须书写成相应的段。例如:行 1 至行 5、行 6 至行19 就分别定义了两个段。前者为数据段,后者为代码段,它们的段名分别为 DATA 和 CODE。应当说明的是:段名是任意的,用户可以根据自己的喜好取任何名字。因此在行 8 有一条 ASSUME 伪指令(下面介绍),它明确地声明了不同的段所对应的段名。 一般而言,在一个语言程序中,代码段是必不可少的。根据需要,用户可以定义相应的数据段(相当于高级语言的变量说明)、附加段以及自己的栈段。; (2) 语句 与高级语言相同,程序是由一条条语句组成的。前面讲过,汇编语言中的指令就是语句。除了第 3 章中所介绍的指令集外,为了方便程序的书写以及汇编器的处理,汇编器本身还提供了伪指令(Pseudo Instruction)和宏指令(Macro Instruction)。因此,在源程序中常常还有伪指令语句和宏指令语句。; a. 指令语句 指令语句的一般格式为(方括号括起的内容为可选项,下同): [标号: ] 操作码 [操作数] [ ; 注释]; b. 伪指令语句 伪指令不属于微处理器的指令系统,它们是汇编器所提供并能够正确识别的指令。伪指令主要用来指示汇编器如何理解并正确处理源程序中的指令,它并不生成代码。 伪指令语句的一般格式为: [ 名字/变量 ] 伪指令 参数 [; 注释]; c. 宏指令语句 所谓宏(Macro),是指一系列指令的集合。程序中可以将一段多处需要使用的多条指令定义成一个宏,用一个名字(宏)来代表它们。当程序中需要这些指令时,直接书写出宏名即可。而当汇编器在对源程序进行汇编时,一但遇到宏,就会将它展开(即还原成多条指令),然后再进行汇编。 宏指令语句的一般格式为: [ 标号: ] 宏指令 参数1 [ , … ] [ ; 注释 ] 其中:省略号表示可以带更多的参数。; (3) 设置操作系统的功能 一旦一个程序执行完毕,就必须将对处理器的控制权返还给操作系统。对高级语言源程序而言,这一功能由编译器或解释器来完成。而对于汇编语言程序,这一功能则必须在源程序中明确给出。在上述例子中,行 7 定义了一个名字为 MAIN 的远过程,而在行 17 则利用一条 RET 指令从该过程中返回。 应当强调指出的是,必须保证程序返回的正确性。由于 MAIN 是一个远过程,操作系统对它的调用属于段间调用。因此,在返回后不仅要求保证 IP 的值正确,还得保证(操作系统中) CS 的值是正确的。为此,源程序中行 9 将 DS 的值入栈,同时在行 10、11 中又向栈中压入了一个 16 位的 0。; (1) 命名规则 汇编语句中名字的命名规则如下: a. 组成名字的合法字符为:字母、数字及一些特殊符号(:,@, _,$); b. 名字长度不大于 31 个字符; c. 名字必须以字母起头; d. 不得将保留字(如指令、伪指令)用作名字。;
显示全部
相似文档