文档详情

汇编语言设计 教案 第四章 汇编语言程序格式.ppt

发布:2017-06-19约1.19万字共62页下载文档
文本预览下载声明
第四章 汇编语言程序格式 4.1 汇编语言程序功能 1、汇编语言程序的建立及汇编过程 用编辑程序建立ASM源程序 用ASM程序把ASM文件转换为OBJ文件 用LINK程序把OBJ文件转换为EXE文件 用DOS命令直接键入文件名就可以执行该程序 2、汇编程序的主要功能 检查源程序 策出源程序中的语法错误,并给出出错信息 产生源程序的目标程序,并可给出列表文件(同时列出汇编语言和机器语言的文件,称为LST文件) 展开宏命令 4.2 伪 操 作 汇编语句由指令、伪指令、宏指令构成 指令:每条指令语句都生成机器代码,各对应一种CPU操作,在程序运行时执行。 伪指令:在汇编程序对源程序汇编期间由汇编程序处理的操作,可以完成如数据定义、分配存储区、指示程序结束等功能,不生成目标代码。 宏指令:用户按照宏定义格式编写的一段程序,可以包含指令、伪指令、甚至其他宏指令。 4.2.2 段定义伪操作 存储器的物理地址是由段地址和偏移地址组合而成的,汇编程序在把源程序转换为目标程序时,必须确定标号和变量的偏移地址,并且需要把有关信息通过目标模块传送给连接程序,以便连接程序把不同的段和模块连接在一起形成一个可执行程序。为此,需要用段定义伪操作。 1. 完整的段定义伪操作 段定义伪操作格式为: 段名 SEGMENT [定位] [组合] [段字] [‘类别’] ……… 段名 ENDS 说明:段名由用户自己起,要符合汇编语句对名字的要求。SEGMENT定义一个段的开始,ENDS定义该段的结束。删节部分,对于数据段、附加段和堆栈段来说,一般是存储单元的定义、分配等伪操作;对于代码段则是指令及伪操作 ASSUME伪指令 格式: ASSUME 段寄存器:段名[,段寄存器:段名……] 功能:说明段寄存器和段之间的关系。 说明:若一个段寄存器与NOTHING关联,则表示取消前边对该段寄存器的假设,可以省略。ASSUME语句并不给段寄存器赋值,它应放在引用段寄存器之前,通常放在代码段或主过程的第一个语句位置。ASSUME伪操作只是指定某个段分配给哪个段寄存器(CS、DS、SS、ES),并不能把段地址装入段寄存器中,因此在代码段中,还必须把段地址装入相应的段寄存器中。 返回DOS的两种方法 方法一: code segment main pro far assume…… start: push ds mov ax,0 push ax …… ret main endp code ends end start 2. 存储模式与简化段定义伪操作 存储模式伪指令 .model 存储模式[,语言类型][,系统类型][,堆栈选项] 使用简化段定义格式时,必须使用。 必须位于所有段定义语句之前。 7种不同的存储模式:tiny,small.medium,compact,large,huge,flat 简化段定义标准格式: .model small .stack .data .code .startup .exit 0 end 段组定义伪指令 组名 GROUP 段名[,段名]……… 将多个同类但不同名的段合并为一个不超过64KB的物理段,并使用组名统一访问它。可理解为组合属性PUBLIC的补充。 4.2.3 程序开始和结束伪操作 程序的开始可用NAME或TITLE为模块取名字。格式为: NAME module-name TITLE text 程序的结束可以用END来表示。格式为: END [label] 4.2.4 数据定义及存储器分配伪操作 格式:[变量名] 助记符 操作数 [;注释] 功能:为变量分配单元,并为其初始化或者只预留空间。 说明: 变量名是可有可无的,需要时由用户自己起。变量名用符号地址表示,作用与语句前的标号相同,但它的后边不需要冒号,它也是其中第一个数据项的偏移量。程序通过变量名引用其中的数据。 助记符是数据类型的符号表示。 助记符 数据类型 一个数据项字节数 DB(BYTE) 字节型 1 DW(WORD) 字型 2 DD(DWORD) 双字型 4 DQ(QWORD) 四字型 8 DF(FWORD) 六字节型(386以上机型有效) 6 DT(TBYTE) 10字节型 10 操作数可以是数字常量、数值表达式、字符串常量、地址表达式、?、n DUP(操作数,……)形式。 数字常量及数值表达式: 操作数可以是常数、表达式。数字中若出现字母形式,不区分大小写。如下所示: 二进制数:以B结尾,有效数字是0、1。 八进制数:以Q或O(字母)结尾,有效数字是0~7。 十进制数:以D结尾,汇编语言中缺省值是十进制数,所以D可以省略不写。有效数字是0~9。
显示全部
相似文档