MASM汇编语言基础.ppt
《MASM汇编语言基础.ppt》由会员分享,可在线阅读,更多相关《MASM汇编语言基础.ppt(42页珍藏版)》请在三一办公上搜索。
1、4.1 汇编语言语句种类及其格式 汇编程序是计算机的系统软件之一,它的作用是将汇编语言源程序翻译成机器语言程序。最常用的支持Intel8086/8088系列微机的汇编程序MASM,是美国Microsoft公司开发较早的宏汇编程序,它不仅具有ASM的全部功能(支持基本汇编语言),而且增加了宏指令、结构、记录等高级宏汇编功能。语句(Statement)是汇编语言源程序的基本组成单位。一个汇编语言源程序有三种基本语句:指令语句、伪指令语句、宏指令语句。,第4章 MASM汇编语言基础,4.1.1 指令语句 每一条指令语句在汇编时都要产生一个可供机器执行的目标代码,因此,也被称为可执行语句。格式如图4.
2、1所示:图4.1 指令语句的格式,一条指令语句有如下4个字段:1标号字段这是一个可选字段。标号必须以“:”作为结束符。一个标号是一条指令的符号地址,它代表该指令的第一个字节的地址。2指令助记符字段这是一条指令中不可缺少的主要成分。它表示这条语句要求CPU完成什么操作。3操作数字段参与操作的数据或地址。指令语句可以有一个操作数、两个操作数或无操作数。,4注释字段这是一个可选字段,注释字段必须以分号“;”为开始,它可以方便程序设计人员对程序或指令加以注释,提高程序的的可读性。,4.1.2 伪指令语句 伪指令本身不产生与之对应的目标代码。它是在汇编程序对汇编语言源程序汇编期间,由汇编程序处理的操作,
3、可以完成数据定义、分配存储区、指示程序结束等任务。,图4.2 伪指令语句的格式,一条伪指令语句也有如下4个字段:1符号名字段 这是一个可选字段。符号名后面不得用冒号“:”,这是它与指令语句格式上的唯一区别。2伪指令字段 这是伪指令语句中不可省略的主要成分。是伪指令语句要求汇编程序完成的具体操作命令。,3操作数字段 这是数据项,本字段是否需要,需要几个,需要什么样的操作数等都由伪指令字段中伪指令来确定。4注释字段 这是一个任选字段,它必须以分号为开始,它的作用与指令语句的注释字段相同。,4.2 汇编语言数据通常汇编语言能识别的数据有:常量、变量和标号。4.2.1 常量常量:出现在8086源程序中
4、的固定值。,1十进制常量:以字母D结尾的09的数字序列,其中字母D可以省略;2二进制常量:以字母B结尾的0和1组成的数字序列;3八进制常量:以字母O或Q结尾的07的数字序列;4十六进制常量:以字母H结尾的09和AF(或af)的数字字母 序列。(注意:若最高位数是AF,则前面需加“0”)5字符串常量:用单引号或双引号括起来的一个或多个字符,这些字符 用它的ASCII码值存储在内存中。,4.2.2 变量 变量就是用来表示程序中所用的内存操作数。,1定义格式:变量名 类型助记符 操作数,操作数,其中变量名字段是可有可无的,它用于指示内存操作数的地址(符号地址);操作数字段用于指示内存操作数,汇编程序
5、将定义的内存操作数,按其类型给它们分配内存单元。,常用的有以下几种:DB伪指令用来定义字节,其后的每个操作数都占用1个存储单元;DW伪指令用来定义字,其后的每个操作数都占用2个存储单元(低位字节存放在低地址,高位字节存放在高地址);DD伪指令用来定义双字,其后的每个操作数都占用4个存储单元;DQ伪指令用来定义四个字,其后的每个操作数都占用8个存储单元。,2变量的三个属性(1)段属性SEG 它表示变量存放在哪一个逻辑段中。当指令中要对这些变量进行存取操作时,事先要把它们所在的段的段基址存放到段寄存器中;(2)偏移量属性OFFSET 表示变量在逻辑段中离段起始点的字节距离。上述段属性和偏移量属性就
6、构成了变量的逻辑地址;(3)类型属性TYPE 表示变量占用存储单元的字节数(并非总字节数),它由类型助记符DB、DW、DD、DQ来规定,即由数据定义伪指令确定的。,3预置初值变量定义格式中的操作数部分,实际上就是给变量预置初值,它们通常有以下几种情况:(1)数值表达式:表示内存操作数的初始值,其值应在其定义的类型范围内。如:xx DB1,1 yy DW216,1(2)问号表达式:不带引号的?表示可预置任何内容。如:cc DB?,(3)字符串表达式:对于DB伪指令,为字符串中每个字符分配一个字节单元。字符串必须是引号括起来的,不超过255个字符。对于DW伪指令,可以给两个字符组成的字符串分配两个
7、字节的存储单元,而且这两个字符的ASCII码的存储顺序是前一个字符在高字节,后一字符在低字节。每一个数据项只能是12个字符。相当于定义字。对于DD伪指令,仅可给两个字符组成的字符串分配4个字节的单元,且这两个ASCII码是存储在两个低字节(存储顺序与DW伪指令相同)中,两个高字节均存放00H。相当于定义一个双字。,(4)带DUP表达式:DUP是定义重复数据操作符,在操作数部分的格式为:重复次数 DUP(重复的内容),DUP可以嵌套使用,举例:jia DB 2 DUP(3,0FH,a)jin DB 3 DUP(2 DUP(?),0E5H),8,jia,jin,其中jia,jin是变量名,4变量的
8、使用(1)在指令语句中,如果要对某存储单元进行存取操作,就可直接引用它的变量名;若操作数采用直接寻址,变量的偏移量作为操作数偏移量;而操作数若采用了寄存器相对寻址或相对基址变址寻址,此时变量的偏移量就作为操作数的位移量。(2)在伪指令语句中:定义变量时引用了另一个变量,则这个变量的内容均是被引用变量的逻辑地址。如用DW,则仅有偏移量,如用DD则前两个字节存放偏移量,后两个字节存放段地址;注意不能用DB引用变量名。,4.2.3 标号(Label)1定义:标号是一条指令目标代码的符号地址,它常作为转移指令或调用指令的操作数。2标号的三个属性:(1)段属性:表示这条指令的目标代码在哪个逻辑段中;(2
9、)偏移量属性:表示这条指令目标代码的首字节在段内离段起始点的字节距离;(3)距离属性(或类型属性),4.3.1 算术运算符 算术运算符有(加)、(减)、(乘)、/(整除)、MOD(求余)。,4.3.2 逻辑运算符 逻辑运算符有4个:AND(与)、OR(或)、NOT(非)和XOR(异或),逻辑运算是按位进行的。,4.3 表达式与运算符,4.3.3 关系运算符 这6个关系运算符分别是:GT(大于)、GE(大于等于)、LT(小于)、LE(小于等于)、EQ(等于)、和NE(不等于)。它们用于比较两个表达式。若是常数,按无符号数比较;若是变量则比较它们的偏移量。比较的结果为真,表示为全1;结果为假,表示
10、为全0。,4.3.4 数值返回运算符 数值返回运算符有5个,分别是:SEG、OFFSET、TYPE、LENGTH和SIZE。这种运算符的对象必须是存储器操作数,即变量名或标号,通过运算后返回的是一个数值。下面分别说明各运算符的功能。1SEG格式:SEG 变量名或标号 当运算符SEG加在一个变量名或标号前面时,汇编程序回送的运算结果是这个变量或标号所在的段的段基址;,2OFFSET格式:OFFSET 变量名或标号 当运算符OFFSET加在一个变量名或标号前面时,汇编程序回送的运算结果是这个变量或标号所在的段的偏移量;,3TYPE 格式:TYPE 变量名或标号 如果是变量,则汇编程序将回送该变量的
11、以字节数表示的类型:DB为1,DW为2,DD为4,DQ为8。如果是标号,则汇编程序将回送代表该标号类型的数值:NEAR为1,FAR为2。,4LENGTH 格式:LENGTH 变量名 如果变量是用重复数据操作符DUP说明的,汇编程序将回送外层DUP给定的值;如果变量没有用DUP说明,则返回的值总是1。5SIZE格式:SIZE 变量名 运算符SIZE加在变量的前面,汇编程序回送的值等于LENGTH和TYPE两个运算符返回值的乘积。(实际上就是数据的存储单元数),4.3.5 属性修改运算符 这种运算符是对变量、标号或某存储器的类型属性进行修改指定,它主要有PTR、段跨越前缀、SHORT、HIGH和L
12、OW等5种。,1PTR 格式:类型 PTR 地址表达式 其中,地址表达式是指要修改类型属性的标号或存储器操作数。如果它是标号,则与之对应的类型有:NEAR、FAR;如果它是存储器操作数,则与之对应的类型有:BYTE、WORD、DWORD。,2段跨越前缀 它是在存储器操作数之前加上段寄存器名和冒号用于强行指定此存储器操作数相对哪个段寄存器,共有4种:DS:、CS:、SS:和ES:,3SHORT 用来修饰JMP指令中转向地址的属性,指出转向地址是在下一条指令地址的128127字节范围之内。4HIGH/LOW格式:HIGH常数或地址表达式(表示取高字节)LOW常数或地址表达式(表示取高字节)这两个运
13、算符称为字节分离操作符,它接收一个常数或地址表达式,HIGH取其高位字节,LOW取其低位字节。其中地址表达式必须具有常量值,HIGH/LOW运算符用于分离出段地址或偏移量的高字节/低字节。,表达式中运算符的计算顺序 首先应该计算优先级别高的运算符;然后从左往右地对优先级别相同的运算符进行计算。表4.1 运算符的优先级别关系表,4.4.1 段定义伪指令格式:段名SEGMENT 段名ENDS 一个完整的汇编源程序中可以定义多个段,但同时起作用的最多只有4个。每一个段都是由伪指令SEGMENT开始,由ENDS结束,SEGMENT和ENDS必须成对出现,并且在SEGMENT和ENDS的前面都必须有同一
14、个段名;SEGMENT和ENDS语句之间的省略号部分,对于代码段来说,主要是指令,也可以有伪指令;对于数据段、附加段和堆栈段来说,一般是存储单元的定义、分配等伪操作。,4.4 程序的段结构,4.4.2 段寻址伪指令 该伪指令用来指明所定义的段与段寄存器的关系其格式如下:ASSUME 段寄存器名:段名,段寄存器:段名,其中段寄存器名为CS、DS、ES、SS中的一个;段名则必须是由SEGMENT定义过的段名;段寄存器名和段名之间必须有冒号“:”。ASSUME伪操作的作用是指示汇编程序指令中用到的标号、过程及变量所在的段。在代码段中,可以随时用ASSUME伪指令修改“段寄存器名:段名”的联系。,4.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MASM 汇编语言 基础
链接地址:https://www.31ppt.com/p-5438790.html