- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 8088汇编语言程序设计
本章的主要内容是汇编语言语句行的构成,源程序的结构,汇编语言程序设计方法。
3.1 重点与难点
本章的学习重点是结构化程序设计思想,顺序、分支、循环结构的程序设计,子程序结构的设计与调用,中断指令的应用。另外,汇编语言伪指令的使用、源程序的结构等也是必须掌握的。
3.1.1 汇编语言语句行的构成
1.标记
(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最大长度不超过31个字符。
(2)保留字:汇编语言中保留下来的具有特殊用途的字串,如指令、伪指令、寄存器名等都是保留字。保留字不可用作标识符。
(3)界符:程序或指令中两个部分的分隔符号。汇编语言源程序中可用的界符:
′〈 〉 ; , : ? $ ( ) + - = & [ ] * / ·
(4)常量:数字常量,可以使用不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。
2.符号及其属性
(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。
(2)变量:即内存单元的符号地址。变量不能与保留字、段名重名。它有三个属性:
段属性,指变量所在段的段地址;
偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。
类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。
(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。标号不能与保留字重名,可使用字母、数字及下划线,但不允许用数字开头,字符个数不超过31个。
标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。
3.表达式
表达式是作为语句的一个操作数,在汇编时一个表达式得到一个值。
(1)操作数
数据——常数、符号常量;存储单元地址——常用符号地址表示。
(2)运算符
算术运算符:+、-、*、/、MOD。对地址的运算仅有+(加)、-(减)运算符。
逻辑运算符:AND、OR、NOT和XOR。注意,不要将其和同样名称的指令操作码相混淆。
关系运算符:EQ、NE、LT、GT、LE和GE。参与关系运算的两个操作数必须都是数值,或同一段中的两个存储单元地址,运算结果为0FFFFH(真,True)或0(假,False)。
分析运算符:0FFSET——取一个标号或变量的偏移地址;
SEG——取一个标号或变量所在段的段地址;
TYPE——取变量和标号的类型(BYTE、WORD、DWORD或NEAR、FAR);
SIZE——计算一个存储区的字节总数;
LENGTH——计算存储区中数据单元的数目,只对数据定义中的DUP操作有效。
综合运算符:PTR——用于暂时改变变量或标号的原有属性,只在当前语句中有效;
THIS——和PTR类似,用于改变存储区的类型;
SHORT——指定一个标号为短标号。
4.语句
指令语句:主要由CPU指令组成,每条语句在汇编过程中都会产生对应的目标代码。
伪操作或伪指令语句:为汇编程序提供信息,让汇编程序在汇编过程中执行特定的功能。
两者本质区别在于,伪指令在汇编过程中不形成任何代码。
这里仅对伪指令进行总结。
(1)符号定义伪指令(赋值语句)
格式:符号常量 EQU 表达式 或 符号常量 = 表达式
功能:把表达式的值赋给符号名。
说明:在程序中,用EQU语句赋值的符号名不能被重新赋值,但用“=”号赋值的符号名可以被重新赋值。若要重新赋值,必须使用解除伪指令PURGE。
(2)内存数据定义伪指令
格式:[变量名] 数据定义 表达式或数据项表
功能:可为数据项分配存储单元,并根据需要设置其初值。还可用符号代表数据项。
说明:数据定义符有字节DB、单字DW、双字DD、8字节DQ、10字节DT;DUP()表示数据重复,“$”表示地址计数器当前值,“?”用于预留存储空间;数据项允许为字符串。
(3)段定义伪指令
格式:段名 SEGMENT [定位方式][连接方式][‘类别名’]
段体
段名 ENDS
功能:为程序汇编和链接说明了段名、分段的各种属性以及分段的开始和结束。段名是自定义符,开始的段名与结束的段名必须相同。段的长度不超过64KB。属性参数定义:
定位方式,指定段的起始地址边界。有四种方式:页边界PAGE、段边界PARA(系统隐含)、字边界WORD、字边界BYTE。
连接方式,告诉连接程序本段与其他段的连接方式。系统隐含为不写,表示本段不与任何段链接。STACK表示此段为堆栈段。
‘类别名’,是合法的自定义符,长度不超过40。凡是类别名相同的段在连接时均按先后顺序连接在相邻存储区中。
说明:段名的命名规则和变量名以及标号一样;单模块程序中属性参数可省略不写。
(4)段址寄存器说
文档评论(0)