[工学]第四章 宏汇编语言程序设计

上传人:油条 文档编号:49699612 上传时间:2018-08-01 格式:PPT 页数:100 大小:567KB
返回 下载 相关 举报
[工学]第四章 宏汇编语言程序设计_第1页
第1页 / 共100页
[工学]第四章 宏汇编语言程序设计_第2页
第2页 / 共100页
[工学]第四章 宏汇编语言程序设计_第3页
第3页 / 共100页
[工学]第四章 宏汇编语言程序设计_第4页
第4页 / 共100页
[工学]第四章 宏汇编语言程序设计_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《[工学]第四章 宏汇编语言程序设计》由会员分享,可在线阅读,更多相关《[工学]第四章 宏汇编语言程序设计(100页珍藏版)》请在金锄头文库上搜索。

1、第四章 宏汇编语言程序设 计* *目 录l4.1 汇编语言程序设计特点l4.2 8086宏汇编源程序的组成l4.3 8086宏汇编语言的基本语法l4.4 8086宏汇编语言常用伪指令l4.5 8086宏汇编语言程序设计技术2 2l程序是一组为完成某种功能而按一定 顺序(由算法确定)编排的指令序列 。l本章将首先介绍8086宏汇编语言的基 本语法及常用伪指令,然后用实例说 明8086宏汇编语言源程序的设计方法 。3 34.1 汇编语言程序设计特点 P148l汇编语言是一种面向CPU指令系统的 程序设计语言。汇编语言具有以下两 个基本特点:l与计算机硬件密切相关,程序设计 人员能更充分地利用机器硬

2、件的全 部功能,发挥机器的长处;l程序目标代码占用内存少,执行速 度快,效率高,具有实时性;4 4汇编语言与高级语言l由于汇编的特点,汇编语言常用于编写计算 机系统程序、实时通信程序和实时控制程序 。但汇编语言程序依赖于机器硬件,不同 CPU提供的汇编指令可能有很大的不同,因 此通用性和移植性较差。l相对于汇编语言,高级语言的编程方便快捷 ,通用性和移植性都较好,在一些涉及大量 数据处理、人机界面等设计任务的应用程序 中,采用高级语言编程更为合适。5 5汇编语言源程序机器语言程序 (目标代码)汇编(可由汇编程序完成 ) 高级语言源程序编译或解释 (可由编译程序完成)从源程序获得目标程序的过 程

3、l为了能顺利完成汇编,用户必须为汇编 程序提供一些与硬件有关的信息,如: 程序使用的变量应分别存放在内存的哪 个单元、堆栈应从内存的什么地址开始 等等,这些信息将以“伪指令”的形式写入 源程序中。6 64.2 8086宏汇编源程序的组成 P149l8086宏汇编源程序 = 8086CPU指令 + 伪指令l“指令”由8086CPU规定的;l“伪指令”说明与硬件有关的信息;7 7伪指令l作用为汇编程序正确汇编该源程序提供一些必要的信 息,如内存逻辑段的划分情况、数据类型的说明 、存储区的分配等,这些信息将按照规定的格式 以“伪指令”的形式写入源程序中,但并不像指令 那样被计算机执行,也不生成相应的

4、机器代码, 因此叫“伪指令”。l常见的伪指令数据定义伪指令 如数据定义语句DB、DW、DD 等程序结构伪指令 如段定义语句、过程定义语句 等与宏有关的伪指令其它伪指令(详见4.4节)8 84.2 8086宏汇编源程序的组成l“段”结构由于8086系统的存储器采用分段管理,而汇 编语言程序又紧密依赖于机器硬件,因此汇编源 程序也由用户根据需要划分成“段”(用 SEGMENT和ENDS伪指令定义段)。一个完整的 8086汇编语言源程序就是由一个或多个段组成的 (用段名加以区分),每个段中包含数目不等的 语句行。8086汇编源程序中可以定义4种类型的段:数 据段、附加段、堆栈段和代码段,定义段后,还

5、 必须用ASSUME伪操作来指明段和段寄存器的关 系。9 94.2.1 段 (例4.1); 段名1 SEGMENT; 一个段的开始 语句1 语句2 段名1ENDS; 一个段的结束 ; 段名2SEGMENT; 另一个段的开始 段名2ENDS; 另一个段的结束 ; ; 其它段 ; END; 源代码结束10104.2.2 语 句 P150l语句的组成8086汇编源程序中包含3种基本语句 :指令性语句(指令)、指示性语句( 伪指令)和宏指令。一般一个汇编源程 序的语句由以下4个部分组成:标识符 操作符 操作数 注释1111l指令性语句:即执行性语句(指令),与机器码 一一对应,表示某种确定操作,包括四

6、部分: 标号: 指令操作码 操作数 ;注释 例: AGAN: ADC SUM,AX;累加l指示性语句:即说明性语句(伪指令),不对应 机器码,只为汇编提供所需信息,由四部分组 成: 名字 伪指令 操作数 ;注释 例:SUM DW 0 ;为结果保留一个字 l宏指令:由一条伪指令代替多条指令,包括宏 定义、宏调用和宏扩展三部分(详见4.4.5节)12128086宏汇编语句中的4个字段 P150标识符 操作符操作符 操作数操作数 注释语句的组成语句的组成: :1313l很多情况下标识符字段是语句中的可选部分 ,主要为便于程序的读写方便而使用。l通常有:l 标号l 名字在指令中出现的标识符称为标号,以

7、冒号结束 ,就是所谓的“符号地址”,可用作跳转指令的目 的地,符号地址具有段基址、偏移量、类型三种 属性。在伪指令中出现的标识符称为名字,后面没有 冒号,就是所谓的“伪指令名字”,通常表现为常 量名、变量名、段名、过程名、宏名等。标识符字段 P1501414标号与各种名字各自代表的含义l标号是指令地址的标记,主要用于程序转 移及调用;l过程名是汇编子程序的名字,实质上就是 子程序的入口地址的标记;l变量名是内存数据的地址标记;l符号常量名是一种符号替代关系;l段名是用分段编程每段的标记,等同于段 基址;l宏名是自定义指令的标记,与符号常量名 类似,也是起代换作用。1515操作符字段 P150l

8、操作符字段:由保留字组成,是语句中 不可缺少的部分。l包括:指令助记符 (如ADD,MOV)伪指令助记符 (如SEGMENT,DB)1616操作数字段 P151l操作数字段:表示操作符操作的对象。l操作数可能为以下几种情况:l常量操作数:如 34 等。l寄存器操作数:如 AX 等。l存储器操作数:如0100H 等。l表达式操作数:如AX+2、SEG NUM1 等。 1717注释字段 P151l注释字段:位于语句行的末尾,由分 号(;)引导。l注释对汇编不起任何作用,不对应于 任何机器码,仅增强源程序的可读性 。1818DATA SEGMENT D1 DB 5 DUP(?)CC EQU 25H

9、DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE BEGIN:MOV AX,DATAMOV DS,AXMOV BL,D1+1 MOV CX,CC+1 AGAN: LOOP AGAN CODE ENDSEND BEGIN标号名字;伪指令;指令数值表达式地址表达式;-;-1919; DATASEGMENT;定义数据段 D1DB 5 DUP(21H);连续的字节单元 CCEQU $D1;对单元计数 SUMDW 0;为结果保留一个字 DATAENDS;数据段定义结束 ; STACK SEGMENT PARA STACK STACK ;定义堆栈段 DB 100 DU

10、P (?) ;预留100个字节的作堆栈空间 STACKENDS;堆栈段定义结束; CODESEGMENT;定义代码段 ASSUME DS:DATA,SS:STACK,CS:CODE ;对各段进行说 明 BEGIN:MOV AX,DATA; DS初始化为DATAMOV DS,AXMOV AX, STACK ; 初始化SSMOV SS, AX回顾例4.6: 多个连续字节单元的 累加定义存储单 元的数据伪指令定义 堆栈段定义语句段定义语句作堆栈用的 存储单元指令2020LEA SI,D1;预置源数据的指针MOV CX,CC ;预置次数LODS BYTE PTR SI ;取一个数并修改指针MOV AH

11、,0 ;清AX的高字节CLC;清CF位 AGAN:ADC SUM,AX ;累加LODS BYTE PTR SI;再取数并修改指针LOOP AGAN;控制循环MOV AH,4CH;完成,返回DOSINT 21H CODEENDS;代码段结束END BEGIN;整个程序结束段定义汇编程 序结束21214.3 8086宏汇编语言的基本语法 P152l介绍8086宏汇编语言MASM5.0规定 的一些基本语法,包括各种可使用的 助记符、保留字,以及各种数据类型 及表达式。22224.3.1 字符集 P152l英文字母:包括大写字母AZ和小写字母a z。宏汇编语言中的大小写字母的作用相 同,不予区分。 l

12、阿拉伯数字: 09。l特殊符号:包括可打印字符和不可打印 字符。其中:l可打印字符包括、$、0FFH是数MOV AL, FFH ;FFH不是数l十进制数:以“D”结尾或无任何字母作结尾 ,如10D、10。2424l字符串常量l字符串常量表示为包含在两个单引 号之间的一连串ASCII字符。当单引 号本身作为一个串元素时,需连写 两个单引号。每个串元素的值定义 为该元素所对应的1字节ASCII码值 。4.3.2 常量(续) 25254.3.4 标识符 P153 l标识符是由用户自行定义的、具有特 殊意义的字符序列,最长不超过31个 字符(多余字符将被忽略)。l符号由字母、数字(不可打头)以及 特殊

13、字符(_、?)组成。注:数字不用于标识符第一位l不能与任何保留字相同。l包括:l变量名、标号、段名、过程名26264.3.3 保留字 P153l汇编源程序中标识符不能使用的字符串l8086CPU规定的所有指令助记符:如 MOV、ADD等。l8086CPU中各寄存器名:包括16位和8位 寄存器。如AL、DH、AX、CS、TF等。l宏汇编程序规定的所有伪指令助记符:如 ASSUME、DB、DW、DD等。l宏汇编程序规定的其他助记符:ABS、 BYTE、DUP、EQ、GE、SEG、SIZE等 。27274.3.5 表达式 P154l由若干操作数和运算符组成的有意义的 组合序列,可以有数值表达式和地址

14、表 达式两种。l表达式可出现于源程序的任何地方l在汇编过程中(而不是程序执行过程中 )即可产生确定的值。2828一. 表达式中的操作数 P154l常量操作数:直接写出的数或用常量 名表示的数。l存储器操作数:可以为变量名或标号 。2929二. 表达式中的运算符 P154l包括算术运算符、逻辑运算符、关系 运算符、分析运算符以及合成运算符 五种。( P154:表4.1 )l有优先级的区别。(P155:表4.2)各种运算符优先级各不相同,但一般建 议使用括号()来定义运算顺序;3030l算术运算符:+、-、*、/、MOD、SHL、 SHRl逻辑运算符:AND、OR、XOR、NOTl关系运算符:EQ、NE、GT、 LT、 GE 、LEl分析运算符:SEG、OFFSET、TYPE、 SIZE、LENGTH 、HIGH、LOWl合成运算符:PTR、THIS、SHORT31311.算术运算符 P155 +、-、*、/、MOD、SHL、SHR数值表达式中可使用所有算术运算符地址表达式仅使用+、-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号