第三章 MASM汇编语言.ppt
文本预览下载声明
第三章 MASM汇编语言 主要内容 汇编的语句结构 伪指令 常用DOS系统功能调用 3.1 汇编的语句结构 3.1.1 汇编语言源程序的格式 两种汇编语言语句类型: 指令性语句 主要由CPU指令组成。 指示性语句 又称伪指令语句,主要用于控制编译申请存储区, 不产生目标代码。 指令性语句的格式为: [标号:] 指令助记符 [操作数 [,操作数]][;注释] 伪指令语句的格式为: [名字] 伪指令定义符 [参数,…,参数] [;注释] 二、逻辑段定义伪指令 1.段定义的简单格式 格式:段名 SEGMENT ┇ ┇ 段内容 段名 ENDS SEGMENT 段定义开始的伪指令 ENDS 段定义结束的伪指令 段内容可以是数据段、附加段、堆栈段和代码段的内容。 对于代码段主要由指令及其伪指令等组成,对于数据段和附加段,主要由伪指令、数据等组成。一个源程序种不同逻辑段的段名可以各不相同,但也允许相同。 2.段设定伪指令 全格式: ASSUME 段寄存器名1:段名1[,段寄存器名2:段名2] ASSUME [,段寄存器名3:段名3] [,段寄存器名4:段名4] ASSUME一般在代码段中,主要用于设定程序段与段寄存器的对应关系。 段寄存器名可以是CS、DS、ES或SS。 段名是用SEGMENT/END定义过的段。 ASSUME应该放在可执行程序开始位置的前面,只是告知汇编程序段寄存器与逻辑段的关系,并不给段寄存器赋初值,赋初值的工作由MOV指令来完成。代码段寄存器CS初值由系统在执行程序时自动赋给,用户不用程序赋值。 例: A SEGMENT DW 56H,78H A ENDS B SEGMENT 200 DUP(?) B ENDS C SEGMENT DW -5H,9DH C ENDS D SEGMENT ASSUEM DS:A,SS:B,ES:C,CS:D; BEGIN: MOV AX,A ;AX←A段的段地址 MOV DS,AX ;DS←数据段段地址A MOV AX,C ;AX←C段的段地址 MOV ES,AX ;ES←附加段段地址C MOV AX,B MOV SS,AX ;SS←堆栈段首址B : D ENDS 上例代码段的程序称为程序头 3.1.2? 符号名 符号名有:变量名、段名、过程名、标号等。 一、标号 标号在指令性语句中,后面通常有一个冒号。 段属性:定义标号所在的程序段的段地址 偏移量:表示标号由段起始地址到定义该标号的地址之间的字节数。 类型:标号的类型有两种,即NEAR和FAR。 二、变量 变量名是存储器中一个数据区的名字,它代表了变量名后面的数据区起始位置。 段属性:代表变量所在数据区的段地址。 偏移量:是该变量所在段的起始地址与变量的地址之间的字节数。 类型:变量的类型有BYTE(字节)、WORD(字)、DWORD(双字)、QWORD(四字)和 TBYTE(十个字节)等,表示数据区中操作对象的单位及存放的格式。 3.1.3 数据在数据段存放的形式 ?一、 数据定义伪指令 功能:定义一个数据存储区的类型。 一般格式: [变量名] 数据定义伪指令 操作数[,操作数…][;注释] 操作数有多个时,用逗号分开。 1.定义变量为字节型(BYTE)DB (Define byte) DB后面的每个操作数占有1个字节,按低字节数据存放在低地址的原则排列。 2.定义变量为字型(WORD)DW (Define word) DW后面的每个操作数占有2个字节,单元相邻,低位字节在低地址中,高位字节在高地址中。 3.定义变量为双字型(DWORD)DD (Define double word) DD后面的操作数每个占有4个字节。 4. 定义变量为四字型(QWORD)DQ(Define quad word) DQ伪指令后面的
显示全部