- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理与接口
汇编语言程序设计
汇编语言
使用指令的助记符、符号地址和标号等编写的程序设计语言称为汇编语言
实际上是机器语言的符号表示(一一对应)
应用系统提供的汇编语言,按照规定的语法规则编写的程序称为汇编语言源程序(ASM)
将汇编语言源程序经过汇编得到目标程序(OBJ)
目标程序经过连接程序连接后才能转换成机器上可执行的程序(EXE)
分为:指令语句和伪指令语句
指令语句
标号:指令助记符 操作数 ;注释
标号表示该指令的符号地址,常作为转移指令的操作数,标号后必须加“:”
可以用作标号的字符包括英文字母、数字或某些特殊字符
第一个字符必须为英文字母或某些特殊字符
圆点“.”只能用作第一个字符
特殊字符不能单独用作标号
系统中已定义的保留字不能作标号
指令助记符是指令语句中唯一不可缺少的部分,它表示指令系统中指令的操作码
操作数:可以有1个或2个或没有
可以由常数、字符或字符串、变量、标号、寄存器和表达式等组成
使用BCD码做操作数的指令,其后面一定要紧跟一条调整指令,以便将运算结果调整成BCD数
不加后缀的数默认为10进制
A~F开头的数前面要加数字0
字符串和字符要用单括号括起来
注释:前面必须加“;”
6
标号:是机器指令语句存放地址的符号表示,也可以是子程序名,即子程序入口地址的符号表示;在代码段中定义和引用。
标号的属性:
①标号的段属性:标号的段属性是指定义该标号所在段
的段首址。
②标号的偏移地址:标号的偏移地址是指它所在段的段
首址到该标号所代表存储单元的字节距离。
③标号的类型: 分NEAR(近)和FAR(远)两类型,近
标号在定义该标号的段内使用,远标号无此限制。
伪指令语句
又称指示性语句,没有对应得机器码,不能让CPU执行,仅在汇编过程中完成某些特定的功能
格式:名字 伪指令指示符 操作数 ;注释
名字是给伪指令语句起的名称,用符号地址表示,名字的格式要求与标号类似,也可以省略,有些语句不能省略,名字后面不能跟“:”
伪指令指示符:
·变量定义伪指令: DB, DW, DD,…
·符号定义伪指令: EQU, =, NAME
·段定义伪指令: SEGMENT, ENDS
·段分配伪指令:ASSUME
·过程定义伪指令: PROC … ENDP
·程序结束语句:END
8
常量
C语言中的常量定义:#define pi=3.1415926
常量的基本概念:汇编时已有确定的数值的量(不是程序运行的时候才能确定的) 。
●用途:
. 机器指令语句中的立即操作数;
. 也可作存贮器操作数的组成部分(位移量V);
. 在数据定义伪指令语句中给变量赋初值;
● 分类:
数值常量、符号常量
9
符号常量的定义:
等价伪指令 EQU
等号伪指令 =
使用:定义后直接引用符号名。
注意:
①符号常量不分配存贮单元,只建立等价代换关系, 可出现在任何段。
②用EQU语句定义的符号常量在该程序中不能再重新赋值,而用“=”定义的符号常量可多次重新赋值,使用时,以最后一次定义的值为准。
特点:
① 在汇编期间被代换成相应等价的数据;
② 提高程序的可读性;
③ 便于随时修改程序中的参数。
10
数值表达式:常量与运算符(算术运算、逻辑运算、关系运算)组成的有确定意义的式子。
①算术运算
+、–、*、/、MOD(模除, 取余数)、SHR(右移)、SHL。
移位的特别说明:表示将二进制常量右移或左移运算符右边所规定的次数(正整数),所空出的位数均补0。
②逻辑运算
逻辑乘:AND (与) 逻辑加:OR (或)
按位加:XOR (异或) 逻辑非:NOT (非)
③关系运算
相等: EQ 不等: NE
小于: LT 大于: GT
小于等于: LE 大于等于: GE
结果为:0 (关系不成立)或者0FFFFH (关系成立)
数值表达式的运算时机
汇编期间进行,运算的结果为一数值常量,汇编程序将数值表达式直接替换为结果数值常量。
MOV AX, 1+2
变量的定义
一般在数据段或附加数据段中使用数据定义伪指令
DB、DW、DD、DQ和DT来定义
格式: [变量名] 数据定义伪指令 表达式[,…]
功能: 定义了一变量,
文档评论(0)