文档详情

微机原理与接口技术-七章-汇编语言及汇编程序.ppt

发布:2017-12-11约1.7万字共67页下载文档
文本预览下载声明
第七章 微型计算机汇编语言及汇编程序 7.1 宏汇编语言的基本语法 7.2 伪指令 7.3 宏指令 7.4 系统功能调用 7.5 汇编程序的功能及汇编过程 7.1 宏汇编语言的基本语法 7.1.2 常量、变量和标号 标号——指令所在内存单元的符号地址 变量 变量——即内存中的存储单元或数据区。 变量名——是存储单元(数据区)的符号地址或名字。 - 变量也有三个属性: -- 段地址—变量所在段的段地址 -- 偏移量—变量单元地址与段首地址之间的位移量。 -- 类 型—有BYTE、WORD和DWORD三种。 - 变量在程序中作为存储器操作数被引用。 标号和变量名的使用规则 组成:A-Z(不分大小写), 0-9, ?@ . _ $ 不能以数字开头,句号(.)只能作为首字符 长度小于31个字符 不能与保留字(指令助记符、伪指令、预定义符号等)重名 不能重复定义 例如: 正确的:LP1, AGAIN, NEXT, _GO, OK_1 错误的:4M, LOOP, AAA, #HELP, +ONE (P457) 7.1.3 表达式与运算符(1) 例1)算术运算符—— +、-、*、/,MOD 例2)逻辑运算符—— AND、OR、XOR、NOT 例3)关系运算符——EQ、NE、LT、GT、LE、GE 7.1.3 表达式与运算符(2) 例4)取地址运算符——SEG、OFFSET 例5)取值运算符——TYPE、LENGTH、SIZE 7.1.3 表达式与运算符(3) 属性运算符——PTR - 用来指定地址操作数的类型。 格式:类型 PTR 地址操作数 类型∈{BYTE, WORD, DWORD, NEAR, FAR} BYTE、WORD、DWORD 用于描述数据存储单元(变量)地址 NEAR、FAR 用于描述转移、调用的目的地址 7.1.3 表达式与运算符(4) 7.2 伪指令 1. 符号定义伪指令(赋值语句)(2) 例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTR[SI+BP] GOTO = JMP … MOV AX, TEN MOV CX, COUNT ADD DIST, FIVE DIST = WORD PTR[SI+BP+1] ADD DIST, AX GOTO LABEL 2. 内存数据定义伪指令(1) 2. 内存数据定义伪指令(2) 2. 内存数据定义伪指令(3) 例2:操作数可以是字符串,例如 STR DB ‘HELLO’ 汇编后的情况如图: 例3: TABLE DB 10 DUP(?) BUFFER DW TABLE,$+3 设TABLE的偏移地址为0080H,则汇编后如下图所示: 3. 段定义伪指令(1) 3. 段定义伪指令(2) 3. 段定义伪指令(3) 例:连接方式 3. 段定义伪指令(4) 例2: 类别 用单引号括起来的字符串。所有同类别的段被安排在连续的存储区域中。 如:给出类别时,在模块1中有段定义: seg1 SEGMENT PARA STACK ‘stack’ … seg1 ENDS 在模块2中有段定义: seg2 SEGMENT PARA STACK ‘stack’ … seg2 ENDS 则连接时这两个段被安排在一起。 4. 段寄存器说明伪指令 ASSUME伪指令 在代码段中,还必须明确段和段寄存器的关系,这由ASSUME语句来指定。如 ASSUME CS:code, DS:data, ES:data 语句中的code和data为段名。 这个语句说明: 1. CS将指向名字为code的代码段 2. DS和ES将指向名字为data的数据段 但要注意,ASSUME伪指令只是告知汇编程序有关段寄存器与段的关系,并没有给段寄存器赋予实际的初值。故下面的语句 MOV AX,DATA MOV DS,AX MOV ES,AX 将段基址装入段寄存器。如果程序中用到堆栈段,则SS也需装入实际的初值。 代码段基地址不需要程序员装入CS寄存器,而由DOS负责装入。 5. 过程(子程序)定义伪指令 8. 定位伪指令 10. 系统隐含进位制伪指令 11. 连接模块引用伪指令(1)
显示全部
相似文档