如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第7章微型计算机汇编语言及汇编程序汇编语言和机器语言相比,使用汇编语言来编写程序的突出优点就是可以使用符号;具体地说,就是可以用助记符来表示指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。助记符一般都是表示一个操作的英文字母的缩写,很便于识别和记忆。不过,用汇编语言编写的程序不能由机器直接执行,而必须翻译成由机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的。用来把汇编语言编写的程序自动翻译成目的程序的软件叫汇编程序。汇编过程的含义如下图7.1所示。用汇编语言编写的程序叫源程序。前面讲的指令系统中的每条指令都是构成源程序的基本语句。汇编语言的指令和机器语言的指令之间有一一对应的关系。所以,汇编语言是和机器密切相关的,是面向机器的语言,CPU不同的机器有不同的汇编语言。采用汇编语言进行程序设计时,我们可以充分利用机器的硬件功能和结构特点,从而可有效地加快程序的执行速度,减小目标程序所占用的存储空间。因此,与高级语言相比,汇编语言为我们提供了直接控制目标代码的手段,而且可以对输入/输出端口进行控制,实时性能好,执行速度快和节省存储空间等明显优点。所以,汇编语言大量被用于编写计算机系统程序、实时通信程序、实时控制程序等。8086和80286,80386,80486系统的汇编程序完全相同,简称作ASM-86。在此基础上进一步扩展其功能,成为当前广泛使用的8086宏汇编程序,简称作MASM-86。7.1宏汇编语言的基本语法7.1.1伪指令语句格式1.标号名字段这是一个任选字段。标号名后面不能用冒号“:”,这是它与指令语句的突出区别。伪指令的标号名可以是常量名、变量名、过程名、结构名、记录名等。它们可以作为指令语句和伪指令语句的操作数,这时,标号名就表示一个常量或存储器地址。2.伪指令字段这是伪指令语句不可省略的主要成分。伪指令种类很多,如定义数据伪指令DB,DW,DD;段定义伪指令SEGMENT;定义过程伪指令PROC等,它们是伪指令语句要求汇编程序完成的具体操作命令。3.操作数字段本字段是否需要,需要几个,需要什么样的操作数等都由伪指令字段中伪指令来确定。操作数可以是一个常数(二进制、十进制、十六进制等)、字符串、常量名、变量名、标号、一些专用的符号(如BYTE,FAR,PARA等)。4.注释字段这是一个任选字段,必须以分号为开始,其作用与指令语句的注释字段相同。7.1.2常数、变量和标号(5)实数:它由整数、小数和指数3部分组成,这是计算机中的浮点表示法。实数一般用十进制数形式给出,其具体格式如下:±整数部分小数部分E±指数部分其中,整数和小数部分形成这个数的值,称作尾数,它可以是带符号的数。指数部分由指数标识符E开始,它表示了值的大小,如5.213E-4。(6)字符串常数:用引号括起来的一个或多个字符。这些字符以ASCII码形式存储在内存中。如“AB”,在内存中就是41H,42H。在程序中,常数主要出现在:(1)指令语句中源操作数中作立即数,它应与目的操作数的位数相一致,可以是8位或16位,例如:MOVAX,0A5F1H(2)在指令语句的基址加变址的寻址方式中作位移量,例如:MOVBX,[SI+32H](3)在数据定义伪指令中,例如:DB12H;定义一个字节数据DW1234H;定义一个字数据DD12345678H;定义一个双字数据DB‘ABCD’;定义4个字节的字符串数据2.变量变量是代表存放在存储单元中的数据,这些数据在程序运行期间可以被随时访问或修改。为了便于对变量的访问,它常常以变量名的形式出现在程序中,可看作是存放数据存储单元的符号地址。(1)变量的定义与预置:定义变量就是给变量分配存储单元,且对这个存储单元赋于一个符号名——变量名,同时将这些存储单元预置初值。定义变量是用数据定义伪指令DB,DW,DD等。例如:VAR-DATASEGMENTDATA1DB12HDATA2DB34HDATA3DW5678HVAR-DATAENDS经过定义的变量,每个变量均有3个属性:①段属性(SEG):表示变量存放在哪一个逻辑中(即变量所在段的段基值。例如,变量名为DATA1,DATA2,DATA3的3个变量都存放在VAR-DATA逻辑段中(用SEGMENT/ENDS伪指令定义一个逻辑段)。当在指令中要对这些变量进行存取操作时,事先要把它们所在段的段基值存放在某一个段寄存器(如DS)中。②偏移量属性(OFFSET):表示变量在逻辑段中离段起始点的字节数。例如,变量DATA1的偏移量为0,而DATA2的偏移量为1,DATA3的偏移量为2。上述段和偏移量两个属性就构成了变量的逻辑地址。③类型