- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基础知识:数制和编码
80x86计算机的组织
8086/8088指令系统和寻址方式
伪指令和汇编语言程序格式
汇编程序简介
重复几个概念
CPU只能识别和运行特定的一组机器指令;
为了便于学习使用,将机器指令符号化形成了汇编语言(二者存在一一对应关系);
汇编程序与汇编语言同时出现,用于将符号指令翻译成机器指令;
汇编程序也有品牌、版本区别,如微软的MASM、Borland公司的BASM。汇编程序的版本变化不是很快,两个方面的变化:一个是随着CPU性能的提高不断增加对新指令和新功能的支持,另一个方面就是不断加强辅助功能,是用户更方便。
常见微软公司提供的MASN(Micro Assembler)宏汇编程序5.0、6.0等。
汇编程序的基本功能
翻译功能。为了将汇编程序简单的一一对应的翻译与高级语言的复杂翻译相区别,特定专用名称:汇编(Assembly)。高级语言的翻译称为编译(Compile)。
汇编程序的附加功能
为了方便用户编程,在汇编程序中增加了很多辅助功能:
对指令的语法检查、错误提示;
数据、地址的代号表示(相当于高级语言中的变量、标号);
定义、预留内存空间;
允许数据或地址以表达式形式出现,汇编程序代为计算,以计算结果为操作数;
高级汇编功能:宏汇编、重复汇编、条件汇编等。
各种版本汇编程序的区别主要是在附加功能上。
附加功能的使用也是通过命令的形式,显然这类命令不是真正的处理器命令,仅仅是汇编程序可以理解并执行的命令,所以称之为伪指令或伪操作。
伪指令(伪操作)
处理器选择伪操作
一个型号的CPU有特定的指令集。80X86系列中不同型号的CPU的指令集向下兼容。汇编程序所能翻译的指令随着CPU的升级同步增加。为了告诉汇编程序按哪个型号的CPU仅行翻译和检查语法错误,汇编程序特别设置了如下说明方法。不做说明默认为8086的指令。
.8086(可以省略) 选用8086 指令集
.286 选用80286 指令集
.286P 选用80286 保护模式的指令集
.386 选用80386 指令集
.386P 选用80386 保护模式的指令集
.486 选用80486 指令集
.486P 选用80486 保护模式的指令集
.586 选用80586 指令集
.586P 选用80586(Pentium)保护模式的指令集
由于向下兼容,高档处理器的指令系统包含低档处理器的指令,所以只要在程序开头标出所用指令对应的最高处理器型号即可。也可以在程序中针对某个指令使用。
本课程只学习8086 指令,所以课程内这部分伪指令基本不用。
程序开始和结束伪操作
[NAME 模块名]:指定模块名,可以不用。
[TITLE 标题]:指定文本标题,可以不用。
如果程序员没有指定模块名,自动以标题中的前6个字符为模块名。如果标题也没指定,则以源文件名为模块名(实用方式)。
END [标号]:遇END结束汇编,标号决定程序的执行起点(只有主模块需要写标号)。所以程序的第一条真指令一定要有标号,就是为了给END用。
段定义伪操作
完整的段定义伪操作
第2章介绍了8086 CPU的内存分段管理模式,而且数据、代码等共可分为4个段。所以,在编写汇编语言程序的时候,需要明确告诉汇编程序从哪到哪是一个段以及哪些内容属于哪一个段。为此目的,汇编程序设计了一对说明段的起点和终点的伪指令:段定义伪指令。
格式:段名称 SEGMENT ;段名称由编程者自己任意设定,SEGMENT是伪指令
本段具体内容,可能是程序,也可能是数据
段名称 ENDS ;段名称与上面要一致,ENDS是伪指令
例4.1:段名1 segment
段1具体内容
段名1 ends
;------------------------
段名2 segment
段2具体内容
段名2 ends
;------------------------
段名3 segment
段3具体内容
段名3 ends
;------------------------
段名4 segment
段4具体内容
段名4 ends
需要注意,进行段定义的时候,要求每个段有名称,但是没有要求段名称的含义。比如
文档评论(0)