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