Lesson8和9微机原理与应用.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lesson8和9微机原理与应用

微机原理及应用B 第4章 汇编语言程序设计 第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. 不得将保留字(如指令、伪指令)用作名字。 (2) 名

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档