当前位置:文档之家› 微型计算机汇编语言及汇编程序.

微型计算机汇编语言及汇编程序.


标号:
标号是一条指令目标代码的符号地址,它常作为转移指令和 子程序调用指令的操作数。每个标号具有3个属性:段属性、 偏移量属性、距离属性。
7.1 宏汇编语言的基本语法
表达式与运算符:
表达式由操作数和运算符组成,在汇编时一个表达式得到一 个值。 (1)算术运算符:+,-,*,/,MOD,SHL,SHR。 (2)逻辑运算符:AND,OR,XOR,NOT。 (3)关系运算符:EQ,NE,LT,LE,GT,GE。当关系成立时,结果 为0FFFFH,当关系不成立时,结果为0。 (4)分析运算符:SEG,OFFSET,TYPE,SIZE,LENGTH。 (5)组合运算符:PTR,THIS。 (6)分字符串常数:用引号扩起来的一个或多个字符,这些字符 以ASCII码形式存储在内存中。如“AB”,在内存中就是41H、 42H。
变量:
变量是代表存放在某些存储单元的数据,这些数据在程序运 行期间可以随时修改。为了便于对变量的访问,它常常以变 量名的形式出现在程序中,它可以认为是存放数据的存储单 元的符号地址。 经过定义的变量具有3个属性:段属性、偏移量属性、类型属 性。
2.内存数据定义伪指令
(1)字节定义伪指令 [名字]DB〈表达式或数据项表〉 表达式值或项表中的每一项是一个字节数,它们从符号名地 址开始按字节连续存放,直到表中数据项结束(地址递增)。 例如: DATA1 DB 50H,50 DATA2 DB ?,?
7.2 伪指令
STRING1 DB ‘ABCDEF’ DATA3 DB 20H DUP(?) (2) 字定义伪指令 [名字]DW〈表达式或数据项表〉 除表达式值或项表中的每一项是两个字节数之外,其它与DB 伪指令相同。 例如: DA_WORD DW 0A3F1H,4981H DA_W DW ?,? D_W1 DW 10H DUP(4) (3) 4字节定义伪指令 [名字]DD〈表达式或数据项表〉 表达式值或项表的每一项是4个字节数。 (4) 8字节定义伪指令 [名字]DQ〈表达式或数据项表〉
8.定位伪指令
格式: ORG〈表达式〉 该伪指令把以下语句定义的内存数据或程序,从表达式指定的起 点(偏移地址)开始连续存放,直至遇到新的ORG指令。
7.3 宏指令
为了简化汇编语言源程序的书写,把一些频繁出现的程序段定 义为“宏指令”,当程序中遇到这个程序段时,只需用一条宏调 用语句,这样有效地缩短了源程序的长度,使源程序易读,也减 少了由于重复书写而引起的错误。 宏指令的使用要经过如下3个步骤: (1) 宏定义:对各个宏指令进行定义,并分别起一个名字; (2) 宏调用:在需要使用的地方,通过宏指令名来调用它; (3) 宏扩展:由宏汇编程序用宏定义中的指令来代替宏指令名。 宏代换语句 格式:宏名 MACRO [形式参数1,形式参数2,…] ┆ 宏体(指令序列) ENDM 功能:宏代换语句为指令序列定义一个宏名,称为宏指令,宏名 可以像指令一样在程序中引用。
汇编运算符的优先级:
见表7.2(见书第160页)所示。
7.2 伪指令
1.符号定义伪指令(赋值语句):
(1)<名字> EQU <表达式> (2)<名字> = <表达式> 该语句把表达式的值赋给符号名,在同一程序中,用EQU语句 赋值的符号名不能被重新赋值,但被“=”赋值的符号名可以 被重新赋值。
7.2 伪指令
(5) 10字节定义伪指令 [名字]DT〈表达式或数据项表〉
3.段定义伪指令
存储器在逻辑上是分段的,各段的定义由伪指令实现。 格式:〈段名〉SEGMENT[定位方式][连接方式][‘类别 名’] … 〈段名〉ENDS 段定义伪指令为程序的汇编和连接说明了段名、分段的各种属性 以及分段的开始和结束。段名是自定义符,开始的段名与结束的 段名必须相同。段的长度不超过64KB。SEGMENT后面的参数是可 选项。
第7章 微型计算机汇编语言及汇编程序
主要内容
宏汇编语言的基本语法 伪指令 宏指令 系统功能调用 汇编语言源程序的基本结构 汇编语言源程序从编辑到执行所经历的过程
7.1 宏汇编语言的基本语法
伪指令的概念:
伪指令本身不产生对应的机器目标代码,其作用是向汇编程 序提供汇编所需要的某些信息,为汇编语言源程序设计提供 方便。
格式: 〈过程名〉PROC[NEAR](或[FAR]) … 〈过程名〉ENDP 过程名是自定义符,定义过程是为实现子程序调用而设的,调用 格式为: CALL〈过程名〉 过程由RET指令返回。过程起始名和终止名必须相同。 NEAR:段内调用,FAR:段间调用,默认时系统约定是NEAR。
7.2 伪指令
6.模块开始伪指令
格式: NAME 模块名 该伪指令指明程序模块的开始,并指出模块名。模块名是自定义 符,它不能是系统保留字,每次汇编只能出现一次。若该伪指令 默认,则取TITLE语句中的页标题前6个字符;若没有TITLE语句, 则取源程序文件名为模块名。
7.模块结束伪指令
格式: END [启动标号或过程名] 该伪指令告诉汇编程序源文件结束,并给出执行程序的入口位置。 启动地址只有在主模块才有意义。
伪指令语句格式:
常数、变量和标号:
常数、变量和标号是汇编语言能识别的数据项,它是指令和 伪指令语句中操作数的基本组成部分。一个数据项往往包含 数值和属性两部分,这两部分对于一条语句汇编成机器目标 代码都有直接关系。
7.1 宏汇编语言的基本语法
常数:
常数是没有任何属性的纯数值,在汇编期间,它的值已能完 全确定,且在程序运行中,它也不会发生变化。它有以下几 种类型: (1)二进制数:以B结尾,由0、1组成的数字序列,如 01011010B。 (2)八进制数:以O或Q结尾,由0~7组成的数字序列,如 723Q,35O。 (3)十进制数:以D结尾(可以省略),由0~9组成的数字序列, 如129,129D。 (4)十六进制数:以H结尾,由0~9、A~F(a~f)组成的序列,如 3A5BH,0A5FDH,0FB12H。 (5)实数:由整数、小数和指数3部分组成,一般用十进制数 给出,其格式如下: ±整数部分.小数部分E±指数部分, 如:5.213E-4。
7.2 伪指令
4.段寄存器说明伪指令
格式:ASSUME 段寄存器:段定义名1[,段寄存器:段定义名 2 , …] 该伪指令告诉汇编程序在汇编时,段寄存器CS、DS、SS和ES应 具有的符号段基址,以便汇编指令时确定段和建立错误信息。但 是段寄存器实际值(CS除外)还要由传送指令在执行程序时赋值。
5.过程(子程序)定义伪指令
相关主题