汇编语言程序设计:汇编语言程序格式
发布时间:2024-01-11 10:01:30浏览次数:36汇编语言程序设计辅导资料八主 题: 第四章 汇编语言程序格式(第 3-4 节)第四章第 3-4 节 概述 这周我们学习第四章中的第 3-4 节,汇编语言程序格式及上机过程。汇编语言程序中每个语句可以有四项组成,按照这些项我们就可以很好的将各种汇编语言指令统一为标准的汇编语言程序格式;上节中我们学习了汇编程序的功能,这节我们就在这一基础上讲解汇编程序的上机过程。第 3 节 汇编语言程序格式1)汇编语言程序格式:包括名字项,操作项,操作数项,注释项,具体格式如下: [name] operaon operand [;comment]2)名字项:一般来说名字项可以是标号或变量,他们都是用来表示本语句的符号地址,都是可有可无的,只有当需要用符号地址来访问该语句时它才需要出现。 名字项可以用字母 A-Z;数字 1-9;专用字符?,@,-,$,·,来表示,但是用专用字符·表示名字项时,必须是第一个字符。 标号:标号在代码段中定义,后面跟着冒号,可以用 EQU 或 LABLE 伪指令定义。标号的 3 种属性:段,偏移值及类型。 变量:变量在数据段或附加数据段定义,后面不跟冒号。可以用 EQU 或 LABLE 伪指令定义。变量的3 种属性:段,偏移属性及类型属性。3)操作项:操作项可以是指令,伪指令或宏指令的助记符。对于指令,汇编程序将其翻译成机器语言指令,对于伪指令,汇编程序将根据其所要求的的功能进行处理。对于宏指令,则将根据其定义展开。4)操作数项:操作数项由一个或多个表达式组成,多个操作数项间用逗号分开,对于指令,操作数项一般给出操作数地址,对于伪指令或宏指令,则给出它们所要求的参数。操作数项可以是常数,寄存器,标号,变量,或由表达式组成。其中表达式是由常数,标号,变量与一些操作符相组合的序列,分为数字表达式和地址表达式两种。下面介绍下几种操作符:
(1)算术操作符:+,-,*,/,mod,其中 MOD 是求余运算符 (2)逻辑与移位操作符:AND,OR,XOR,NOT,SHL,SHR,它们都是按位操作哦,并且只能用于数字表达式中 (3)关系操作符:EQ(等于),NE(不等),LT(小于),GT(大于),LE(小于等于),GE(大于等于)。关系操作符的两个操作数必须都是数字,或是同一段内的两个存储器地址,,计算结果为逻辑值。 (4)数值回送操作符:TYPE,LENGTH,SIZE,OFFSET,SEG 等 TYPE:用于回送变量的类型属性值,DB 为 1,DW 为 2,DD 为 4,DF 为 6,DQ 为 8,DT 为 10 LENGTH:对于变量中使用 DUP 操作符的情况,LENGTH 操作符将回送分配给该变量的单元数,其他情况回送值为 1 SIZE:汇编程序回送分配给该变量的字节数,并且该值为 LEBGTH 与 TYPE 值的乘积 OFFSET:汇编程序将回送变量或标号的偏移地址值 SEG:汇编程序将回送变量或标号的段地址值 (5)属性操作符:主要有 PTR,段操作符,SHORT,THIS,HIGH,LOW,HIGHWORD,LOWWORD PTR:它用来建立一个符号地址,但并不分配存储器,只是用来给已分配的存储地址赋予另一种属性,使该地址具有另一种类型 段操作符:用来表示一个标量,变量或地址表达式的段属性,例如段前缀指定某段的地址操作数。5)操作符的优先级问题: (1)圆括号中的项,方括号中的项,结构变量,然后是 LENGTH,SIZE,WIDTH 和 MASK (2)名:(段取代) (3)PTR,OFFSET,SEG,TYPE,THIS 及段操作符 (4)HIGH 和 LOW (5)乘除法,MOD,SHR,SHL (6)加减法
(7)关系操作:EQ,NE,LT,GT,LE,GE (8)逻辑非 (9)逻辑与 (10)逻辑或与异或 (11)SHORT说明:以上操作符的表达式优先级就是按照上表中分析的,上表优先级从上到下优先级是从高到低的。有了优先级,计算机就可以对表达式进行有序的计算从而得到表达式的值了。6)注释项:注释项用来说明一段程序,一条或几条指令的功能,它是可有可无的,但是有了注释对于汇编程序的可读性就有了很好的提升。另外注释的写法也是一个值得学习的地方第 2 节 汇编程序的上机过程 1)建立汇编语言程序的工作环境 (1)编辑程序 (2)汇编程序,MASM.EXE (3) 连接程序,LINK.EXE (4) 调试程序,DEBUG..COM2)建立 ASM 文件 3)用 MASM 程序产生目标文件(.OBJ):在汇编程序中输入 ASM 文件名,有三个输出文件,第一个是 OBJ 文件,第二个是 LIST 文件,列表文件,第三个就是 CRF 文件,产生交叉引用表。对于[***.obj]后的:回车输入,就可以建立这一目标文件,也是汇编的主要目的;列表文件可以在[NUL.LIST]:后输入回车,就取消 LIST 文件的或者,如果输入文件名***,就得到列表文件,列表文件就是列出源程序和机器语言程序清单,并给出符号表,以利于调试程序。 CRF 文件可以在[NUL.CRF]:后输出回车来取消获取,因为通常我们不需要建立此文件,当然对于[NUL.CRF]:后输入文件名***可以建立此文件,CRF 文件能够产生交叉引用表 REF,交叉引用表给出了用户定义的所有符号,并且还对每个符号列出了其定义所在的行号及引用的行号,因此为大程序的调试和修改带来很
大便利。 汇编程序在对源程序进行汇编的过程中一个重要的功能就是对源程序进行错误检测,,可以给出源程序中的错误信息。如程序错误或语法错误等信息 4)用 LINK 程序产生 EXE 文件: 汇编程序已产生出的二进制文件 OBJ 还不是可执行文件,还必须用 LINK 程序把 OBJ 文件转换为可执行文件 EXE。如果一个程序是由多个模块组成的,可以使用 LINK 把它们连接到一起。 5)程序的执行:建立了 EXE 文件后,可以在 DOS 系统下,键入文件名即可执行该程序 6)COM 文件:也是一种可执行文件,COM 文件不允许分段,占有的空间不允许超过 64KB,适用于编址小程序,但是执行速度较快;COM 文件程序不分段,入口点必须是 100H,不需要设置堆栈段,在程序装入时,由系统自动把 SP 建立在该段之末,所有子程序都应定义为 NEAR 属性本周要求掌握的内容如下:基本概念:汇编语言程序格式的概念、汇编语言程序格式的四种组成项、名字项,操作项,操作数项,注释项的作用、操作数项表达式内容时的表达式的值运算、汇编语言程序设计的流程、EXE 文件和 COM 文件的区别、熟悉几种操作符的优先级基本理论:理解汇编语言程序的格式概念和组成项的作用,进一步理解变量和标号的区别和定义方法,会计算操作数项中表达式的值,会使用几种数值回送操作符,熟悉几种常见操作符的优先级,了解汇编语言程序的上机过程,熟悉各个过程生成的文件类型习题:1、请将下列几类操作符的优先级按从高到第排列出来: AND ,+,*,(),NOT,PTR ( (),PTR,*,+,NOT ,AND)2、COM 文件比 EXE 文件执行速度快,不分段,不建立堆栈段。 (对)3、有如下指令:DATABC DW 100 DUP(22)
执行下列两条指令后,CX 的值分别为多少: MOV CX,LENGTH DATABC MOV CX,SIZE DATABC (A) 100,100 (B)100,200 (C) 200,100 (D)200,200 (B)4、源程序经汇编程序汇编后可以产生什么文件: (A)目标文件 (B)交叉引用表 (C)列表文件 (D)CRF 文件 (ACD)