第四章宏汇编语言程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微机系统原理及接口技术电子科技大学第四章宏汇编语言程序设计8学时微机系统原理及接口技术电子科技大学目录4.1汇编语言程序设计特点4.28086宏汇编源程序的组成4.38086宏汇编语言的基本语法4.48086宏汇编语言常用伪指令4.58086宏汇编语言程序设计技术微机系统原理及接口技术电子科技大学程序是一组为完成某种功能而按一定顺序(由算法确定)编排的指令序列。本章将首先介绍8086宏汇编语言的基本语法及常用伪指令,然后用实例说明8086宏汇编语言源程序的设计方法。微机系统原理及接口技术电子科技大学4.1汇编语言程序设计特点汇编语言是一种用符号表示的、面向CPU指令系统的程序设计语言。汇编语言具有以下两个基本特点:程序设计人员能更充分地利用机器硬件的全部功能,发挥机器的长处;程序目标代码占用内存少,执行速度快,效率高,具有实时性;微机系统原理及接口技术电子科技大学汇编语言与高级语言由于汇编的特点,汇编语言常用于编写计算机系统程序、实时通信程序和实时控制程序。但汇编语言程序依赖于机器硬件,其通用性和移植性都较差。相对于汇编语言,高级语言的编程方便快捷,通用性和移植性都较好,在一些涉及大量数据处理、人机界面等设计任务的应用程序中,采用高级语言编程更为合适。微机系统原理及接口技术电子科技大学汇编语言源程序机器语言程序(目标代码)汇编(可由汇编程序完成)高级语言源程序编译或解释(可由编译程序完成)从源程序获得目标程序的过程为了能顺利完成汇编,用户必须为汇编程序提供一些额外的、与硬件有关的信息,如:程序使用的变量应分别存放在内存的哪个单元、堆栈应从内存的什么地址开始等等。微机系统原理及接口技术电子科技大学4.28086宏汇编源程序的组成由“指令”和“伪指令”共同构成的。“指令”由8086CPU规定的;“伪指令”说明与硬件有关的信息;“段”结构因为8086系统的存储器采用分段管理微机系统原理及接口技术电子科技大学段(例4.1);――――――――――――――――――――――――――――段名1SEGMENT;一个段的开始语句1语句2……段名1ENDS;一个段的结束;――――――――――――――――――――――――――――-段名2SEGMENT;另一个段的开始……段名2ENDS;另一个段的结束;―――――――――――――――――――――――――――――……;其它段;―――――――――――――――――――――――――――――END;源代码结束微机系统原理及接口技术电子科技大学语句语句是由各种符号(标记)及分隔符按照一定的规则组织起来的一个有序序列。标识符操作符操作数注释有三种基本语句:指令性语句(指令)、指示性语句(伪指令)和宏指令。微机系统原理及接口技术电子科技大学指令性语句:即执行性语句(指令),与机器码一一对应,表示某种确定操作,包括四部分:[标号:]指令操作码[操作数][;注释]例:AGAN:ADCSUM,AX;累加指示性语句:即说明性语句(伪指令),不对应机器码,只为汇编提供所需信息,由四部分组成:[名字]伪指令[操作数][;注释]例:SUMDW0;为结果保留一个字宏指令:由伪指令定义的指令序列,包括宏定义、宏调用和宏扩展三部分微机系统原理及接口技术电子科技大学标识符字段标识符字段由各种有效字符组成,一般表示符号地址,具有段基址、偏移量、类型三种属性。很多情况下标识符字段是语句中的可选部分,主要为便于程序的读写方便而使用。通常有:标号名字微机系统原理及接口技术电子科技大学操作符字段操作符字段:由保留字组成,是语句中不可缺少的部分。包括:指令助记符伪指令助记符微机系统原理及接口技术电子科技大学操作数字段操作数字段:表示操作符操作的对象。操作数可能为以下几种情况:常量操作数:如34等。寄存器操作数:如AX等。存储器操作数:如[0100H]等。表达式操作数:如[AX+2]、SEGNUM1等。微机系统原理及接口技术电子科技大学注释字段注释字段:用于说明、解释程序使之便于阅读或检查的任何文字或字符,位于语句行的末尾,用分号(;)引导。注释对汇编不起任何作用,不对应于任何机器码,仅增强源程序的可读性。微机系统原理及接口技术电子科技大学DATASEGMENT;定义数据段D1DB5DUP(?);连续的字节单元CCEQU$-D1;对单元计数SUMDW0;为结果保留一个字DATAENDS;数据段定义结束STACKSEGMENTPARASTACK‘STACK’;定义堆栈段DB100DUP(?);100字节的栈空间STACKENDS;堆栈段定义结束CODESEGMENT;定义代码段ASSUMEDS:DATA,SS:STACK,CS:CODE;对各段进行说明BEGIN:MOVAX,DATA;DS初始化为DATAMOVDS,AXLEASI,D1;预置源数据的指针例4.6:多个连续字节单元的累加定义存储单元的数据伪指令定义堆栈段定义语句作堆栈用的存储单元指令微机系统原理及接口技术电子科技大学MOVCX,CC;预置次数LODSBYTEPTR[SI];取一个数并修改指针MOVAH,0;清AX的高字节CLC;清CF位AGAN:ADCSUM,AX;累加LODSBYTEPTR[SI];再取数并修改指针LOOPAGAN;控制循环MOVAH,4CH;完成,返回DOSINT21HCODEENDS;代码段结束ENDBEGIN;整个程序结束段定义汇编程序结束微机系统原理及接口技术电子科技大学4.38086宏汇编语言的基本语法介绍8086宏汇编语言MASM5.0规定的一些基本语法,包括各种可使用的助记符、保留字,以及各种数据类型及表达式。微机系统原理及接口技术电子科技大学4.3.1字符集英文字母:包括大写字母A~Z和小写字母a~z。宏汇编语言中的大小写字母的作用相同,不予区分。阿拉伯数字:0~9。注:数字不用于标识符第一位特殊符号:包括可打印字符和不可打印字符。其中:可打印字符包括+、-、、@、$、&等等。不可打印字符包括空格符、制表符(Tab键)、回车符、换行符。微机系统原理及接口技术电子科技大学4.3.2常量数字常量二进制数:以“B”结尾,如00001101B;八进制数:以“O”结尾,如725O;十六进制数:以“H”结尾,并且必须以数字打头,即若最高位为字母A~F,前面应加0,如0A12H;十进制数:以“D”结尾或无任何字母作结尾,如10D、10。微机系统原理及接口技术电子科技大学字符串常量字符串常量表示为包含在两个单引号之间的一连串ASCII字符。当单引号本身作为一个串元素时,需连写两个单引号。每个串元素的值定义为该元素所对应的1字节ASCII码值。微机系统原理及接口技术电子科技大学4.3.3保留字汇编源程序中标识符不能使用的字符串8086CPU规定的所有指令助记符:如MOV、ADD等。8086CPU中各寄存器名:包括16位和8位寄存器。如AL、DH、AX、CS、TF等。宏汇编程序规定的所有伪指令助记符:如ASSUME、DB、DW、DD等。宏汇编程序规定的其他助记符:ABS、BYTE、DUP、EQ、GE、SEG、SIZE等。微机系统原理及接口技术电子科技大学4.3.4符号符号是由用户自行定义的、具有特殊意义的字符序列,最长不超过31个字符(多余字符将被忽略)。符号由字母、数字(不可打头)以及特殊字符(_、@、?)组成。不能与任何保留字相同。包括:变量名、标号、段名、过程名微机系统原理及接口技术电子科技大学4.3.5表达式由若干操作数和运算符组成的有意义的组合序列。表达式可出现于源程序的任何地方,在汇编过程中(而不是程序执行过程中)即可产生确定的值。微机系统原理及接口技术电子科技大学表达式中的操作数常量操作数:直接写出的数或用常量名表示的数。存储器操作数:可以为变量名或标号。微机系统原理及接口技术电子科技大学表达式中的运算符多。包括算术运算符、逻辑运算符、关系运算符、分析运算符以及合成运算符五种。有优先级的区别。(ref:表4.1,4.2)微机系统原理及接口技术电子科技大学算术运算符:+、-、*、/、MOD、SHL、SHR逻辑运算符:AND、OR、XOR、NOT关系运算符:EQ、NE、GT、LT、GE、LE分析运算符:SEG、OFFSET、TYPE、SIZE、LENGTH、HIGH、LOW综合运算符:PTR、DS:、THIS、SHORT微机系统原理及接口技术电子科技大学算术运算符•数值表达式中可使用所有算术运算符•地址表达式仅使用‘+、-’算术运算符•算术运算符不影响标志位例:完成80H+90H解:MOVAL,80H+90H;使用数值表达式;(AL)=10H、CF=不变MOVAL,80HADDAL,90H;使用加法指令;(AL)=10H、CF=1微机系统原理及接口技术电子科技大学逻辑运算符逻辑运算符在两个操作数之间按位进行二进制布尔运算,结果产生确定的数值。逻辑运算符与逻辑指令助记符形同意不同例:ANDBL,46HAND0FH;汇编后得到“ANDBL,06H”的目标码微机系统原理及接口技术电子科技大学关系运算符在两个无符号数操作数之间进行大小关系比较若关系满足则返回全1,否则返回全0。例:MOVAX,0A2HNE02H;汇编后得到“MOVAX,0FFFFH”的目标码微机系统原理及接口技术电子科技大学分析运算符对单个操作数进行属性分解,分别返回不同属性的值SEG取变量或标号所在段的段寄存器值作为段基址,结果为16位值OFFSET取变量或标号的段内偏移量,结果为16位值TYPE取变量或标号的类型LENGTH取DUP重复次数SIZE取分配给变量的字节个数微机系统原理及接口技术电子科技大学例4.13/4.14CSEGSEGMENTBUFFDW10DUP(1234H),10H,00HCOUNDD12345678HCSEGEDNS则:SEGBUFF=CSEG;段基址OFFSETBUFF=0;偏移量TYPEBUFF=2(字);类型SIZEBUFF=10*2=20;字节数LENGTHBUFF=10;DUP次数HIGH12A0H=12H;高字节LOW12A0H=0A0H;低字节SEGCOUN=CSEGOFFSETCOUN=22TYPECOUN=4(双字)SIZECOUN=4LENGTHCOUN=1微机系统原理及接口技术电子科技大学合成运算符合成运算符修改已定义的单个操作数,重新生成段基址、偏移量相同而类型不同的新操作数。有:PTR、THIS、SHORT微机系统原理及接口技术电子科技大学PTR:“新类型PTR原操作数”,新操作数的类型为表达式中指定的“新类型”,新操作数的段基址和偏移量与“原操作数”相同。THIS:“THIS新类型”,类似PTR,不同的是:新操作数的段基址和偏移量为汇编过程中遇到THIS运算符时的当前值.SHORT:“SHORTNear-label”,表达式代表的新标号的类型为SHORT微机系统原理及接口技术电子科技大学4.48086宏汇编语言常用伪指令8086宏汇编语言MASM5.0规定的常用伪指令,包括数据定义语句、程序结构语句、模块链接语句、列表控制语句、结构性数据语句、有关宏的语句、条件汇编语句等。微机系统原理及接口技术电子科技大学4.4.1数据定义伪指令符号定义语句EQUCOUNTEQUCX;用COUNT代替CX通用寄存器MEQUMOV;用M代替MOV指令助记符例4.20“$”与EQU结合使用BUFDW?,?;定义两个字变量,共占用4个字节的内存空间SUMDD?;定义一个双字变量,占用4个字节的内存空间NOEQU$-BUF;NO表示当前内存单元与BUF单元之间的“距离”,;NO等同于立即数“8”,不占内存空间微机系统原理及接口技术电子科技大学符号定义语句=;赋值PP=89FAHPP=PP+1;PP=89FBH等号语句与EQU语句的相同点在于:符号而非变量,故用EQU、=

1 / 98
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功