微型计算机汇编语言及汇编程序
第五章 微型计算机汇编语言及汇编程序
汇编语言和机器语言相比,突出优点就是可以使用符号,即使用助记符表示指令的操作码和操作数,用标号和符号来代替地址、常量和变量。
汇编语言编写的程序不能由机器直接执行,而必须翻译成由机器代码组成的目标程序,这个过程叫做汇编。用来把汇编语言编写的程序自动翻译成目的程序的软件叫做汇编程序。
汇编语言源程序源程序
汇编语言源程序
源程序
汇编
汇编程序
目的程序
用汇编语言编写的程序叫做源程序。汇编语言大量被用于编写计算机系统程序、实时通信程序、实时控制程序等。
第一节 宏汇编程序语言的基本语法
一、伪指令语句格式
伪指令语句中的伪指令本身不产生对应的机器目标代码。它仅仅是告诉汇编程序,对后面的指令语句和伪指令语句的操作数应该如何产生机器目标代码。伪指令格式如下示:
标号名注释
标号名
注释
伪指令
操作数
,
1、标号名字段
这是任选字段。标号名可以是常量名、变量名、过程名、结构名、记录名等。标号名就表示一个常量或存储器地址。
2、伪指令字段
这是伪指令语句不可省略的主要部分。它们是伪指令语句要求汇编程序完成的具体操作命令。
3、操作数字段
本字段是否需要,需要几个,需要什么样的操作数等都由伪指令字段中伪指令来确定。操作数可以是一个常数、字符串、常量名、变量名、标号、一些专用的符号。
4、注释字段
这是一个任选字段,它必须以分号为开始,它的作用与指令语句的注释字段相同。
二、常数、变量和标号
1、常数
常数分为数值型常数和字符型常数,分别为:
(1)二进制数
(2)八进制数
(3)十进制数
(4)十六进制数
(5)实数:它由整数、小数和指数3部分组成。这是计算机中的浮点数表示法。
(6)字符串常数:用引号括起来的一个或多个字符。这些字符以ASCII码形式存储在内存中。如“AB”,在内存中就是41H、42H。
在程序中,常数主要出现在:
(1)指令语句中源操作数中作立即数,它应与目的操作数的位数相一致,可以是8位或16位。如:
MOV AX,0A5F1H
(2)在指令语句的基址加变址的寻址方式中作位移量,如:
MOV BX,[SI+32H]
(3)在数据定义的伪指令中,如:
DB 12H
DW 1234H
DD
DB ‘ABCD’
2、变量
变量是代表存放在某些存储单元的数据,这些数据在程序运行期间随时可以修改。为了便于对变量的访问,它常常以变量名的形式出现在程序中,它可以认为是存放数据存储单元的符号地址。
(1)变量的定义与预置
定义变量就是给变量分配存储单元,且对这个存储单元赋于一个符号名——变量名,同时将这些存储单元预置初值。
VAR-DATA SEGMENT ;定义一个数据段
DATA1 DB 12H ;定义DATA1=12H
DATA2 DB 34H ;定义DATA2=34H
DATA3 DW 5678H ;定义DATA3=5678H
VAR-DATA ENDS
经过定义的变量,每个变量均有3个属性。
1)段属性(SEG):表示变量存放在哪一个逻辑中,例如,上面所定义的变量,它就是在数据段中。当在指令中要对这些变量进行存取操作时,事先要把它们所在段的段基值存放在某一个段寄存器(如DS)中。
2)偏移量属性(OFFSET):表示变量在逻辑段中离段起始点的字节数。例如,变量DATA1的偏移量为0,而DATA2的偏移量为1,DATA3偏移量为2。
上述段和偏移量两个属性就构成了变量的逻辑地址。
3)类型属性(TYPE):表示变量占用存储单元的字节数。这一属性是由数据定义伪指令DB、DW、DD来规定的。变量DATA1、DATA2是用DB定义的,它的类型属性为字节;而DATA3是用DW定义的,类型属性为字;如果用DD定义,类型属性为双字。
(2)数据定义伪指令
这种伪指令主要为数据项分配存储单元并预置初值。它的格式为:
变量名DB
变量名
DB
DWE
DD
表达式1
表达式2
、
其中表达式1、表达式2、…是给变量赋予的初值。表达式可以有以下几种情况:
1)数值表达式。
DAT-BYTE DB 50H,50
变量DA-BYTE的内容为50H,它的下一个字节为32H。
2)?表达式:不带引号的?表示可预置任何内容。例:
DA-B DB ?,?
DA-W DW ?,?
第一条语句是要求汇编程序分配两个字节单位,第2条语句是要求分配两个字单元。这些单元里现在可以是任意值。
3)字符串表达式:对于DB伪指令,为字符串中每一个字符分配一个字节单元。字符串必须是用引号括起来且不超过255个字符。字符串