汇编语言程序设计 第四章 汇编语言程序格式
发布时间:2024-04-02 09:04:31浏览次数:22汇编语言程序设计主 题: 第四章 汇编语言程序格式(第 节)内 容:第四章第 1-2 节 概述 这周我们学习第四章中的第 节,汇编程序功能及伪操作。在理解汇编程序工作特点基础上学习几种伪操作,主要包括段定义、程序开始和结束伪操作、数据定义及存储器分配位操作、表达式赋值、地址计数器和对准伪操作等等。伪指令作为汇编语言重要的组成部分,对于阅读和编程都很重要 ,因此需要大家在理解的基础上好好掌握本周内容。第 1 节 汇编程序功能1、汇编程序)汇编程序:汇编程序不是用户编写的,而是由专业软件公司编写的程序主要包括微软的 系列和 公司推出的 系列,他的作用就是为用户开放伪操作和操作符,供用户开发汇编程序时使用。汇编程序的主要功能是:()检查源程序()测出源程序中的语法错误并给出错误信息()产生源程序的目标程序,并给出列表文件,同时列出汇编语言和机器语言的文件()展开宏指令)汇编程序运行的过程:()使用编辑程序建立 后缀的源文件()使用汇编程序把 文件转换成 后缀的目标文件()使用 程序把 文件转换成 后缀的可执行文件第 1 页 共 6 页
()在 系统中输入文件名就可以执行该程序了第 2 节 伪操作)汇编语言的三种指令系统:基本指令、伪指令、宏指令)伪指令和伪操作:伪操作也称为伪指令,它是写给汇编程序看的,不是用户程序的真正执行部分。)处理器选择伪操作:这几条伪操作就是告诉汇编程序,本次汇编语言程序所需要使用的微处理器的型号,从而确定不同的指令系统。)段定义伪操作: 格式如下: !"!# !" !"!#说明:这也是完整的段定义伪操作,其中删节号部分对于数据段、附加段和堆栈段来说,一般是存储单元的定义、分配等伪操作,代码段则是指令及伪操作。此外还需要用 $ 指令来说明段和段寄存器的对应关系,其格式为:##%!# !"& '#"&!(# !"!# !"& '#"&!(# !"!段定义伪操作还可以在 ) 后增加类型和属性的说明,格式如下: !"!# !"*' +",-.*/!0'+",-.*%#+",-.*1/#"2. !!"!#其中定位类型(' ",-)说明段的起始地址应该有怎样的边界值,可以为 ,不为 ,偶地址第 2 页 共 6 页
和, 的倍数等情况;组合类型( /!0'",-)说明程序链接时的段组合并方法;使用类型(%#",-)说明使用 位寻址方式还是 位寻址方式;类别(‘/##2)引号中给出连接时组成段组的类型名,连接段组时可以把相同类别的段的位置靠近一起3)存储模型及简化段定义伪操作()存储模型伪操作,格式如下:!!&,+!*4!-"'#.说明:这条伪指令用来说明存储器中是如何安排各个段的,通过存储模型(!!&,+!)来说明,有如下几种存储模型:',、#!、!'%!、/!-/"、& 、5% 、6"4对应的模型说明可以在参考书和课件中找到;!-"'#允许用户指定高级语言接口、操作系统和堆栈距离,例如 !#!4/!& 4-#/4#+#47&#"/89:简化段定义伪操作:在汇编程序中有七种标准段:;代码段'"''<"初始化数据段$'"''<"未初始化数据段=&''"''<"远初始化数据段=&%''"''<"远未初始化数据段;#""#常数段"/8堆栈段说明:可以看出,简化段定义伪操作中,数据段是可以系划分的,需要注意的是,当使用这些简化段定义时,必须在这些简化段伪操作出现之前先用! 伪操作定义存储模型,然后再使用简化段伪操作定义段。与简化段定义伪操作相关的预定义符号,如符号>4第 3 页 共 6 页
?@4>"?#4@利用>",就可以给出数据段的段名。)程序开始和结束伪操作:程序开始用 ! 或 "'" 作为模块的名字,格式为:!!%+!'""@"表示源程序结束的伪操作格式为:*0.这条指令说名结束汇编程序,并从标号地址开始执行源程序。A)数据定义及存储器分配伪操作:格式是 : *?&'0.!!'/-&4-&*B/!!"#.说明:变量字段是可有可无的,它用符号地址表示,其作用和指令语句中的标号相同,但它后面没有冒号;变量的值是当前段第一个字节的偏移地址。助记符(!!'/)字段有以下几种定义:9字节:、C(字)、(双字)、=( 字节)、D( 字)、( 字节)操作数字段还可以使用复制操作符 %-4格式如下:E-"+/%"%-9-&44-&:其中 &-"+/%" 可以为一个表达式,它的值是一正整数,用来指定括号中操作数的重复次数。注意变量的类型属性问题,变量的值是该伪操作中第一个数据项在当前段内第一个字节的偏移地址,变量还有一个类型属性,用于表示该语句中每一个数据项的长度。变量表达式的属性和变量本身是相同的。)赋值伪操作:格式为:@-&##'+!F%@-&##'说明:如果程序中多次出现同一个表达式,为了方便就可以使用赋值伪操作。赋值伪操作可以第 4 页 共 6 页
定义变量。注意赋值伪操作 D$ 和G伪操作是不同的,D$ 伪操作不允许重复定义表达式,而G伪操作却可以重复定义。H)地址计数器与对准伪操作()地址计数器I:在汇编过程中,I用来保存当前正在汇编的指令的偏移地址。地址计数器的值用I表示。用户引用地址计数器I的两种方式:指令中引用,如: IJ伪指令中引用,如:EEKC44IJ44指令中引用I时,如果地址计数器表达式的值不是另一条指令的首地址,则程序指示出错,无法执行。()对准伪操作E) 伪操作这条指令用来设置当前地址计数器的值,从而使下一字节的地址成为设定的值。L 伪操作这条指令使下一个变量或指令开始于偶数字节地址。) 伪操作这条指令保证双字数组边界从 的倍数开始' 和 L是等价的。)基数控制伪操作,格式如下:E@-&##'其功能作用只需要了解即可。本周要求掌握的内容如下:基本概念:汇编程序、汇编程序的功能、汇编程序汇编过程、段定义和简化段定义伪操作、变量、变量的值和变量的类型、地址计数器和地址计数器的值、对准伪操作第 5 页 共 6 页
基本理论:理解汇编程序的功能和汇编过程,理解和掌握完整的段定义伪操作和简化段定义伪操作,区分变量和标号,会使用两种定义变量的方法,理解地址计数器表达式所计算出的地址,了解几种对准伪操作。习题:、经汇编好的 文件已经可以运行。(错)、已知程序段如下:"+0,"44M+CEC4M43+CN4====M请问,上述程序汇编后,从 +K 地址开始算,第 个存储单元和第 H 个存储单元中的内容分别是什么()(5)(==M)、如果想定义一个变量,你可以采用什么指令:()段定义 ()存储模型 (;)数据定义 ()D$(;)第 6 页 共 6 页