预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

§4.1汇编语言语句种类及其格式汇编程序是计算机的系统软件之一,它的作用是将汇编语言源程序翻译成机器语言程序。最常用的支持Intel8086/8088系列微机的汇编程序MASM,是美国Microsoft公司开发较早的宏汇编程序,它不仅具有ASM的全部功能(支持基本汇编语言),而且增加了宏指令、结构、记录等高级宏汇编功能。语句(Statement)是汇编语言源程序的基本组成单位。一个汇编语言源程序有三种基本语句:指令语句、伪指令语句、宏指令语句。§4.1.1指令语句每一条指令语句在汇编时都要产生一个可供机器执行的目标代码,因此,也被称为可执行语句。格式如图4.1所示:图4.1指令语句的格式一条指令语句有如下4个字段:1.标号字段这是一个可选字段。标号必须以“:”作为结束符。一个标号是一条指令的符号地址,它代表该指令的第一个字节的地址。2.指令助记符字段这是一条指令中不可缺少的主要成分。它表示这条语句要求CPU完成什么操作。3.操作数字段参与操作的数据或地址。指令语句可以有一个操作数、两个操作数或无操作数。§4.1.2伪指令语句伪指令本身不产生与之对应的目标代码。它是在汇编程序对汇编语言源程序汇编期间,由汇编程序处理的操作,可以完成数据定义、分配存储区、指示程序结束等任务。一条伪指令语句也有如下4个字段:1.符号名字段这是一个可选字段。符号名后面不得用冒号“:”,这是它与指令语句格式上的唯一区别。2.伪指令字段这是伪指令语句中不可省略的主要成分。是伪指令语句要求汇编程序完成的具体操作命令。§4.2汇编语言数据通常汇编语言能识别的数据有:常量、变量和标号。§4.2.1常量常量:出现在8086源程序中的固定值。§4.2.2变量变量就是用来表示程序中所用的内存操作数。2.变量的三个属性(1)段属性SEG它表示变量存放在哪一个逻辑段中。当指令中要对这些变量进行存取操作时,事先要把它们所在的段的段基址存放到段寄存器中;(2)偏移量属性OFFSET表示变量在逻辑段中离段起始点的字节距离。上述段属性和偏移量属性就构成了变量的逻辑地址;(3)类型属性TYPE表示变量占用存储单元的字节数(并非总字节数),它由类型助记符DB、DW、DD、DQ来规定,即由数据定义伪指令确定的。(4)带DUP表达式:DUP是定义重复数据操作符,在操作数部分的格式为:重复次数DUP(重复的内容)§4.2.3标号(Label)1.定义:标号是一条指令目标代码的符号地址,它常作为转移指令或调用指令的操作数。2.标号的三个属性:(1)段属性:表示这条指令的目标代码在哪个逻辑段中;(2)偏移量属性:表示这条指令目标代码的首字节在段内离段起始点的字节距离;(3)距离属性(或类型属性)§4.3.1算术运算符算术运算符有+(加)、-(减)、*(乘)、/(整除)、MOD(求余)。§4.3.4数值返回运算符数值返回运算符有5个,分别是:SEG、OFFSET、TYPE、LENGTH和SIZE。这种运算符的对象必须是存储器操作数,即变量名或标号,通过运算后返回的是一个数值。下面分别说明各运算符的功能。1.SEG格式:SEG变量名或标号当运算符SEG加在一个变量名或标号前面时,汇编程序回送的运算结果是这个变量或标号所在的段的段基址;3.TYPE格式:TYPE变量名或标号如果是变量,则汇编程序将回送该变量的以字节数表示的类型:DB为1,DW为2,DD为4,DQ为8。如果是标号,则汇编程序将回送代表该标号类型的数值:NEAR为-1,FAR为-2。§4.3.5属性修改运算符这种运算符是对变量、标号或某存储器的类型属性进行修改指定,它主要有PTR、段跨越前缀、SHORT、HIGH和LOW等5种。3.SHORT用来修饰JMP指令中转向地址的属性,指出转向地址是在下一条指令地址的-128~+127字节范围之内。4.HIGH/LOW格式:HIGH常数或地址表达式(表示取高字节)LOW常数或地址表达式(表示取高字节)这两个运算符称为字节分离操作符,它接收一个常数或地址表达式,HIGH取其高位字节,LOW取其低位字节。其中地址表达式必须具有常量值,HIGH/LOW运算符用于分离出段地址或偏移量的高字节/低字节。表达式中运算符的计算顺序首先应该计算优先级别高的运算符;然后从左往右地对优先级别相同的运算符进行计算。表4.1运算符的优先级别关系表§4.4.1段定义伪指令格式:段名SEGMENT……段名ENDS一个完整的汇编源程序中可以定义多个段,但同时起作用的最多只有4个。每一个段都是由伪指令SEGMENT开始,由ENDS结束,SEGMENT和ENDS必须成对出现,并且在SEGMENT和ENDS的前面都必须有同一个段名;SEGMENT和ENDS语句之间的省略号部分,对于代码段来说,主要是指令,也可以有伪指令;对于数据段