微机系统原理与接口技术--第四章 伪指令与程序设计

上传人:倏*** 文档编号:240763304 上传时间:2024-05-05 格式:PPT 页数:98 大小:649.50KB
返回 下载 相关 举报
微机系统原理与接口技术--第四章 伪指令与程序设计_第1页
第1页 / 共98页
微机系统原理与接口技术--第四章 伪指令与程序设计_第2页
第2页 / 共98页
微机系统原理与接口技术--第四章 伪指令与程序设计_第3页
第3页 / 共98页
点击查看更多>>
资源描述
微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学第四章第四章 宏汇编语言程序设计宏汇编语言程序设计8 学时学时微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学目目 录录u4.1 汇编语言程序设计特点汇编语言程序设计特点u4.2 8086宏汇编源程序的组成宏汇编源程序的组成u4.3 8086宏汇编语言的基本语法宏汇编语言的基本语法u4.4 8086宏汇编语言常用伪指令宏汇编语言常用伪指令u4.5 8086宏汇编语言程序设计技术宏汇编语言程序设计技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学u程序是一组为完成某种功能而按一定顺序程序是一组为完成某种功能而按一定顺序(由算法确定)编排的(由算法确定)编排的指令序列指令序列。u本章将首先介绍本章将首先介绍8086宏汇编语言的基本语宏汇编语言的基本语法及常用伪指令,然后用实例说明法及常用伪指令,然后用实例说明8086宏宏汇编语言源程序的设计方法。汇编语言源程序的设计方法。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.1 汇编语言程序设计特点汇编语言程序设计特点u汇编语言是一种用符号表示的汇编语言是一种用符号表示的、面向、面向CPU指令系统指令系统的程序设计语言。汇编语言具有的程序设计语言。汇编语言具有以下以下两个基本特点:两个基本特点:程序设计人员能更充分地利用机器硬件的程序设计人员能更充分地利用机器硬件的程序设计人员能更充分地利用机器硬件的程序设计人员能更充分地利用机器硬件的全部全部全部全部功能,发挥机器的长处;功能,发挥机器的长处;功能,发挥机器的长处;功能,发挥机器的长处;程序目标代码占用内存少,执行程序目标代码占用内存少,执行程序目标代码占用内存少,执行程序目标代码占用内存少,执行速度快速度快速度快速度快,效率效率效率效率高高高高,具有,具有,具有,具有实时性实时性实时性实时性;微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学汇编语言与高级语言汇编语言与高级语言u由于汇编的特点,由于汇编的特点,汇编语言汇编语言常用于编写计常用于编写计算机算机系统程序系统程序、实时实时通信程序和通信程序和实时实时控制控制程序。但汇编语言程序依赖于机器硬件,程序。但汇编语言程序依赖于机器硬件,其其通用性和移植性都较差通用性和移植性都较差。u相对于汇编语言,相对于汇编语言,高级语言高级语言的的编程方便快编程方便快捷,通用性和移植性都较好捷,通用性和移植性都较好,在一些涉及,在一些涉及大量数据处理、人机界面等设计任务的应大量数据处理、人机界面等设计任务的应用程序中,采用高级语言编程更为合适。用程序中,采用高级语言编程更为合适。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学汇编语言源程序机器语言程序(目标代码)汇编(可由汇编程序完成)高级语言源程序编译或解释(可由编译程序完成)从源程序获得目标程序的过程从源程序获得目标程序的过程u为了能顺利完成汇编,用户必须为汇编程序提供为了能顺利完成汇编,用户必须为汇编程序提供为了能顺利完成汇编,用户必须为汇编程序提供为了能顺利完成汇编,用户必须为汇编程序提供一些额外的、与硬件有关的信息,如:程序使用一些额外的、与硬件有关的信息,如:程序使用一些额外的、与硬件有关的信息,如:程序使用一些额外的、与硬件有关的信息,如:程序使用的变量应分别存放在内存的哪个单元、堆栈应从的变量应分别存放在内存的哪个单元、堆栈应从的变量应分别存放在内存的哪个单元、堆栈应从的变量应分别存放在内存的哪个单元、堆栈应从内存的什么地址开始等等。内存的什么地址开始等等。内存的什么地址开始等等。内存的什么地址开始等等。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.2 8086宏汇编源程序的组成宏汇编源程序的组成u由由“指令指令”和和“伪指令伪指令”共同构成的。共同构成的。“指令指令指令指令”由由由由8086CPU8086CPU规定的;规定的;规定的;规定的;“伪指令伪指令伪指令伪指令”说明与硬件有关的信息;说明与硬件有关的信息;说明与硬件有关的信息;说明与硬件有关的信息;u“段段”结构结构因为因为因为因为80868086系统的存储器采用分段管理系统的存储器采用分段管理系统的存储器采用分段管理系统的存储器采用分段管理微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学段段(例例4.1);段名段名1SEGMENTSEGMENT;一个段的开始语句1语句2 段名段名1ENDSENDS;一个段的结束;段名段名2SEGMENTSEGMENT;另一个段的开始段名段名2ENDSENDS;另一个段的结束;其它段;ENDEND;源代码结束微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学语语 句句u语语句句是是由由各各种种符符号号(标标记记)及及分分隔隔符符按按照照一定的规则组织起来的一个有序序列。一定的规则组织起来的一个有序序列。标识符 操作符操作符 操作数操作数 注释u有有三三种种基基本本语语句句:指指令令性性语语句句(指指令令)、指示性指示性语句(伪指令)和语句(伪指令)和宏指令宏指令。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学u指令性语句指令性语句:即执行性语句即执行性语句即执行性语句即执行性语句(指令指令指令指令),),与机器码一一对与机器码一一对与机器码一一对与机器码一一对应,表示某种确定操作,包括四部分:应,表示某种确定操作,包括四部分:应,表示某种确定操作,包括四部分:应,表示某种确定操作,包括四部分:标号:标号:标号:标号:指令操作码指令操作码指令操作码指令操作码 操作数操作数操作数操作数 ;注释注释注释注释 例:例:例:例:AGANAGAN:ADCADC SUMSUM,AXAX;累加累加累加累加u指示性语句指示性语句:即说明性语句即说明性语句即说明性语句即说明性语句(伪指令伪指令伪指令伪指令),),不对应机器码,不对应机器码,不对应机器码,不对应机器码,只为汇编提供所需信息,由四部分组成:只为汇编提供所需信息,由四部分组成:只为汇编提供所需信息,由四部分组成:只为汇编提供所需信息,由四部分组成:名字名字名字名字 伪指令伪指令伪指令伪指令 操作数操作数操作数操作数 ;注释注释注释注释 例:例:例:例:SUMSUMDW 0DW 0;为结果保留一个字为结果保留一个字为结果保留一个字为结果保留一个字 u宏指令宏指令:由伪指令定义的指令序列,包括宏定义、宏由伪指令定义的指令序列,包括宏定义、宏由伪指令定义的指令序列,包括宏定义、宏由伪指令定义的指令序列,包括宏定义、宏调用和宏扩展三部分调用和宏扩展三部分调用和宏扩展三部分调用和宏扩展三部分微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学标识符字段标识符字段u标识符字段由各种有效字符组成,一般表标识符字段由各种有效字符组成,一般表示符号地址,具有示符号地址,具有段基址段基址、偏移量偏移量、类型类型三种属性。三种属性。u很多情况下标识符字段是语句中的很多情况下标识符字段是语句中的可选部可选部分分,主要为便于程序的读写方便而使用。,主要为便于程序的读写方便而使用。u通常有通常有:标号标号 名字名字微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学操作符字段操作符字段u操作符字段:由保留字组成,是语句中操作符字段:由保留字组成,是语句中不不可缺少可缺少的部分。的部分。u包括包括:指令助记符指令助记符伪指令助记符伪指令助记符微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学操作数字段操作数字段u操作数字段操作数字段:表示操作符:表示操作符操作的对象操作的对象。u操作数可能为以下几种情况:操作数可能为以下几种情况:常量操作数:常量操作数:常量操作数:常量操作数:如如如如 34 34 等等等等。寄存器操作数:寄存器操作数:寄存器操作数:寄存器操作数:如如如如 AXAX 等等等等。存储器操作数:如存储器操作数:如存储器操作数:如存储器操作数:如0100H0100H 等。等。等。等。表达式操作数:如表达式操作数:如表达式操作数:如表达式操作数:如AX+2AX+2、SEG NUM1SEG NUM1等。等。等。等。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学注释字段注释字段u注释字段:用于说明、解释程序使之便于注释字段:用于说明、解释程序使之便于阅读或检查的任何文字或字符,位于语句阅读或检查的任何文字或字符,位于语句行的末尾,用行的末尾,用分号分号(;)引导。引导。u注释注释对汇编不起任何作用对汇编不起任何作用,不对应于任何,不对应于任何机器码,仅增强源程序的可读性。机器码,仅增强源程序的可读性。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学DATADATASEGMENTSEGMENT;定义数据段定义数据段定义数据段定义数据段D1D1DB 5 DUPDB 5 DUP(?)(?)(?)(?);连续的字节单元连续的字节单元连续的字节单元连续的字节单元CCCCEQU$EQU$D1D1;对单元计数对单元计数对单元计数对单元计数SUMSUMDW 0DW 0;为结果保留一个字为结果保留一个字为结果保留一个字为结果保留一个字DATADATAENDSENDS;数据段定义结束数据段定义结束数据段定义结束数据段定义结束STACK SEGMENT PARA STACK STACKSTACK SEGMENT PARA STACK STACK;定义堆栈段定义堆栈段定义堆栈段定义堆栈段DB 100 DUP DB 100 DUP(?)(?)(?)(?);100;100字节的栈空间字节的栈空间字节的栈空间字节的栈空间STACKSTACK ENDSENDS;堆栈段定义结束堆栈段定义结束堆栈段定义结束堆栈段定义结束CODECODE SEGMENTSEGMENT;定义代码段定义代码段定义代码段定义代码段ASSUMEASSUME DS:DATA DS:DATA,SS:STACKSS:STACK,CS:CODECS:CODE;对各段进行说明对各段进行说明对各段进行说明对各段进行说明BEGINBEGIN:MOV AXMOV AX,DATADATA;DSDS初始化为初始化为初始化为初始化为DATADATAMOV DSMOV DS,AXAXLEA SILEA SI,D1D1;预置源数据的指针预置源数据的指针预置源数据的指针预置源数据的指针例例4.6:多个连续字节单元的累加多个连续字节单元的累加定义存储单元定义存储单元的数据的数据伪伪指令指令定义堆栈定义堆栈段定义语句段定义语句段定义语句段定义语句作作堆栈用的堆栈用的存储单元存储单元指令指令微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学MOV CXMOV CX,CCCC;预置次数预置次数预置次数预置次数LODS BYTE PTR SILODS BYTE PTR SI;取一个数并修改指针取一个数并修改指针取一个数并修改指针取一个数并修改指针MOV AHMOV AH,0 0;清;清;清;清AXAX的高字节的高字节的高字节的高字节CLCCLC;清;清;清;清CFCF位位位位AGANAGAN:ADC SUMADC SUM,AXAX;累加累加累加累加LODS BYTE PTR SILODS BYTE PTR SI;再取数并修改指针再取数并修改指针再取数并修改指针再取数并修改指针LOOP AGANLOOP AGAN;控制循环控制循环控制循环控制循环MOV AHMOV AH,4CH4CH;完成,返回完成,返回完成,返回完成,返回DOSDOSINT 21HINT 21HCODECODEENDSENDS;代码段结束代码段结束代码段结束代码段结束ENDENDBEGINBEGIN;整个程序结束整个程序结束整个程序结束整个程序结束段段定义定义汇编程序汇编程序结束结束微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.3 8086宏汇编语言的基本语法宏汇编语言的基本语法u介绍介绍8086宏汇编语言宏汇编语言MASM5.0规定的一些规定的一些基本语法,包括各种可使用的助记符、保基本语法,包括各种可使用的助记符、保留字,以及各种数据类型及表达式。留字,以及各种数据类型及表达式。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.3.1 字符集字符集u英文字母:包括大写字母英文字母:包括大写字母AZ和小写字母和小写字母az。宏汇编语言中的大小写字母的作用相同,宏汇编语言中的大小写字母的作用相同,不予不予区分区分。u阿拉伯数字阿拉伯数字:09。注:数字不用于标识符第一位注:数字不用于标识符第一位注:数字不用于标识符第一位注:数字不用于标识符第一位u特殊符号:包括可打印字符和不可打印字符。特殊符号:包括可打印字符和不可打印字符。其中:其中:可打印字符包括可打印字符包括可打印字符包括可打印字符包括、$、&等等。等等。等等。等等。不可打印字符包括空格符、制表符(不可打印字符包括空格符、制表符(不可打印字符包括空格符、制表符(不可打印字符包括空格符、制表符(TabTab键)、回键)、回键)、回键)、回车符、换行符。车符、换行符。车符、换行符。车符、换行符。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.3.2 常量常量u数字常量数字常量二进制数:以二进制数:以二进制数:以二进制数:以“B B”结尾,如结尾,如结尾,如结尾,如0000110100001101B B;八进制数:以八进制数:以八进制数:以八进制数:以“OO”结尾,如结尾,如结尾,如结尾,如725725OO;十六进制数:以十六进制数:以十六进制数:以十六进制数:以“HH”结尾,并且必须以数字结尾,并且必须以数字结尾,并且必须以数字结尾,并且必须以数字打头,即若最高位为字母打头,即若最高位为字母打头,即若最高位为字母打头,即若最高位为字母A AF F,前面应加前面应加前面应加前面应加0 0,如如如如0 0A12A12HH;十进制数:以十进制数:以十进制数:以十进制数:以“D D”结尾或无任何字母作结尾,结尾或无任何字母作结尾,结尾或无任何字母作结尾,结尾或无任何字母作结尾,如如如如1010D D、1010。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学u字符串常量字符串常量字符串常量表示为包含在两个字符串常量表示为包含在两个字符串常量表示为包含在两个字符串常量表示为包含在两个单引号单引号单引号单引号之间的一之间的一之间的一之间的一连串连串连串连串ASCIIASCII字符。当单引号本身作为一个串元字符。当单引号本身作为一个串元字符。当单引号本身作为一个串元字符。当单引号本身作为一个串元素时,需连写两个单引号。每个串元素的值定素时,需连写两个单引号。每个串元素的值定素时,需连写两个单引号。每个串元素的值定素时,需连写两个单引号。每个串元素的值定义为该元素所对应的义为该元素所对应的义为该元素所对应的义为该元素所对应的1 1字节字节字节字节ASCIIASCII码值码值码值码值。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.3.3 保留字保留字u汇编源程序中汇编源程序中标识符不能使用标识符不能使用的字符串的字符串8086CPU8086CPU规定的所有规定的所有规定的所有规定的所有指令助记符指令助记符指令助记符指令助记符:如:如:如:如MOVMOV、ADDADD等。等。等。等。8086CPU8086CPU中各中各中各中各寄存器名寄存器名寄存器名寄存器名:包括:包括:包括:包括1616位和位和位和位和8 8位寄存位寄存位寄存位寄存器。如器。如器。如器。如ALAL、DHDH、AXAX、CSCS、TFTF等。等。等。等。宏汇编程序规定的所有宏汇编程序规定的所有宏汇编程序规定的所有宏汇编程序规定的所有伪指令助记符伪指令助记符伪指令助记符伪指令助记符:如:如:如:如ASSUMEASSUME、DBDB、DWDW、DDDD等。等。等。等。宏汇编程序规定的宏汇编程序规定的宏汇编程序规定的宏汇编程序规定的其他助记符其他助记符其他助记符其他助记符:ABSABS、BYTEBYTE、DUPDUP、EQEQ、GEGE、SEGSEG、SIZESIZE等。等。等。等。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.3.4 符号符号u符号是由用户自行定义的、具有特殊意义符号是由用户自行定义的、具有特殊意义的字符序列,最长不超过的字符序列,最长不超过31个字符(多余个字符(多余字符将被忽略)。字符将被忽略)。u符号由字母、数字符号由字母、数字(不可打头)(不可打头)以及特殊以及特殊字符(字符(_、?)组成。)组成。u不能与任何保留字相同。不能与任何保留字相同。u包括包括:变量名、标号、段名、过程名变量名、标号、段名、过程名微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.3.5 表达式表达式u由若干操作数和运算符组成的有意义的组由若干操作数和运算符组成的有意义的组合序列。合序列。u表达式可出现于源程序的任何地方,表达式可出现于源程序的任何地方,u在在汇编过程中汇编过程中(而不是程序执行过程中而不是程序执行过程中)即可产生确定的值。即可产生确定的值。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学表达式中的操作数表达式中的操作数u常量操作数常量操作数:直接写出的数或用常量名表:直接写出的数或用常量名表示的数。示的数。u存储器操作数存储器操作数:可以为变量名或标号。:可以为变量名或标号。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学表达式中的运算符表达式中的运算符u多。多。u包括包括算术运算符算术运算符、逻辑运算符逻辑运算符、关系运算关系运算符符、分析运算符分析运算符以及以及合成运算符合成运算符五种。五种。u有优先级的区别。有优先级的区别。(ref:表表4.1,4.2)微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学uu算术运算符:算术运算符:+、-、*、/、MOD、SHL、SHRuu逻辑运算符:逻辑运算符:AND、OR、XOR、NOTuu关系运算符:关系运算符:EQ、NE、GT、LT、GE、LEuu分析运算符:分析运算符:SEG、OFFSET、TYPE、SIZE、LENGTH、HIGH、LOWuu综合运算符:综合运算符:PTR、DS:、THIS、SHORT微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学算术运算符算术运算符数值表达式数值表达式中可使用所有算术运算符中可使用所有算术运算符地址表达式地址表达式仅使用仅使用+、-算术运算符算术运算符算术运算符算术运算符不影响标志位不影响标志位例:完成例:完成80H+90H解:解:解:解:MOV ALMOV AL,80H+90H80H+90H;使用使用使用使用数值表达式数值表达式数值表达式数值表达式 ;(AL)=10H;(AL)=10H、CF=CF=不变不变不变不变n n MOV ALMOV AL,80H80H ADD AL ADD AL,90H90H;使用使用使用使用加法指令加法指令加法指令加法指令 ;(AL)=10H;(AL)=10H、CF=1CF=1微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学逻辑运算符逻辑运算符u逻辑运算符在两个操作数之间逻辑运算符在两个操作数之间按位按位进行二进行二进制布尔运算,结果产生确定的数值。进制布尔运算,结果产生确定的数值。u逻辑运算符与逻辑指令助记符逻辑运算符与逻辑指令助记符形同意不同形同意不同u例例:AND BL,46H AND 0FH;汇编后得到汇编后得到汇编后得到汇编后得到“AND BL,06H”的目标码的目标码的目标码的目标码微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学关系运算符关系运算符u在两个无符号数操作数之间进行大小关系比较在两个无符号数操作数之间进行大小关系比较u若关系满足则返回若关系满足则返回全全1,否则返回,否则返回全全0。u例例:MOV AX,0A2H NE 02H;汇编后得到汇编后得到汇编后得到汇编后得到“MOV AX,0FFFFH”的目标码的目标码的目标码的目标码微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学分析运算符分析运算符u对单个操作数进行属性分解,分别返回不同属对单个操作数进行属性分解,分别返回不同属性的值性的值uSEG取变量或标号所在段的段寄存器值取变量或标号所在段的段寄存器值作为段基址,结果为作为段基址,结果为16位值位值u OFFSET取变量或标号的段内偏移量,结果取变量或标号的段内偏移量,结果为为16位值位值u TYPE取变量或标号的类型取变量或标号的类型u LENGTH取取DUP重复次数重复次数u SIZE取分配给变量的字节个数取分配给变量的字节个数微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学例例 4.13/4.14CSEG SEGMENTCSEG SEGMENTBUFFBUFF DW DW 10DUP10DUP(1234H1234H),),),),10H10H,00H00HCOUNCOUN DD DD 12345678H12345678HCSEG EDNSCSEG EDNS则:则:SEG BUFF=CSEG ;段基址段基址 OFFSET BUFF=0 ;偏移量偏移量 TYPE BUFF=2(字)字);类;类型型 SIZE BUFF=10*2=20 ;字字节数节数 LENGTH BUFF=10 ;DUP次数次数 HIGH 12A0H=12H;高字节高字节 LOW 12A0H=0A0H ;低字节低字节 SEG COUN=CSEGOFFSET COUN=22TYPE COUN=4(双字)双字)SIZE COUN=4 LENGTH COUN=1 微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学合成运算符合成运算符u合成运算符修改合成运算符修改已定义已定义的单个操作数,重的单个操作数,重新生成段基址、偏移量相同而新生成段基址、偏移量相同而类型不同类型不同的的新操作数新操作数。u有有:PTR、THIS、SHORT微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学uPTR:“新类型新类型 PTR 原操作数原操作数”,新操作,新操作数的类型为表达式中指定的数的类型为表达式中指定的“新类型新类型”,新新操作数的段基址和偏移量与操作数的段基址和偏移量与“原操作数原操作数”相同。相同。uTHIS:“THIS 新类型新类型”,类似,类似PTR,不同不同的是的是:新操作数的段基址和偏移量为汇编过新操作数的段基址和偏移量为汇编过程中遇到程中遇到THIS运算符时的当前值运算符时的当前值.uSHORT:“SHORT Near-label”,表达式代表达式代表的新标号的类型为表的新标号的类型为SHORT微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.4 8086宏汇编语言常用伪指令宏汇编语言常用伪指令u8086宏汇编语言宏汇编语言MASM5.0规定的常用伪指规定的常用伪指令,包括令,包括数据定义语句、程序结构语句、数据定义语句、程序结构语句、模块链接语句、列表控制语句、结构性数模块链接语句、列表控制语句、结构性数据语句、有关宏的语句、条件汇编语句据语句、有关宏的语句、条件汇编语句等等。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.4.1数据定义伪指令数据定义伪指令u符号定义语句符号定义语句EQUCOUNT COUNT EQUEQU CX CX;用用用用COUNTCOUNT代替代替代替代替CXCX通用寄存器通用寄存器通用寄存器通用寄存器 MMEQUEQU MOV MOV;用用用用MM代替代替代替代替MOVMOV指令助记符指令助记符指令助记符指令助记符 例例例例 4.204.20“$”“$”与与与与EQUEQU结合使用结合使用结合使用结合使用BUFBUFDWDW?,?,?;定义两个字变量,共占用定义两个字变量,共占用定义两个字变量,共占用定义两个字变量,共占用4 4个字节的内存空间个字节的内存空间个字节的内存空间个字节的内存空间SUMSUMDDDD?;定义一个双字变量,占用定义一个双字变量,占用定义一个双字变量,占用定义一个双字变量,占用4 4个字节的内存空间个字节的内存空间个字节的内存空间个字节的内存空间NONO EQUEQU$BUFBUF;NO;NO表示当前内存单元与表示当前内存单元与表示当前内存单元与表示当前内存单元与BUFBUF单元之单元之单元之单元之间的间的间的间的“距离距离距离距离”,;NO;NO等同于立即数等同于立即数等同于立即数等同于立即数“8”8”,不占内存空,不占内存空,不占内存空,不占内存空间间间间微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学u符号定义语句符号定义语句;赋值赋值PP PP=89FAH 89FAHPP PP=PP+1 PP+1;PP=89FBH;PP=89FBHu等号语句等号语句与与EQU语句语句的相同点在于的相同点在于:符号符号而而非变量,故用非变量,故用EQU、=定义的符号定义的符号不占用不占用存储器单元存储器单元u区别在于区别在于:等号语句等号语句可以在同一源程序中可以在同一源程序中重重复定义复定义符号而符号而无需解除无需解除微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学数据定义语句数据定义语句DB、DW、DD等等u用于为数据项分配存储单元并预置初值。用于为数据项分配存储单元并预置初值。DB 变量为变量为字节字节数据类型(数据类型(8位位)DW 变量为变量为字字数据类型(数据类型(16位位)DD 变量为变量为双字双字数据类型(数据类型(32位位)DQ 变量为变量为4字字数据类型(数据类型(64位位)DT 变量为变量为10字节字节数据类型(数据类型(80位位)微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学uONEONEDBDB 8 8;给变量给变量给变量给变量ONEONE分配一个字节分配一个字节分配一个字节分配一个字节,并,并,并,并预置初值为预置初值为预置初值为预置初值为8 8uTWOTWODBDB?;字节变量字节变量字节变量字节变量TWOTWO初值不定初值不定初值不定初值不定uST ST DB DB 96,20,?,96,20,?,5757;以以以以STRSTR为首址为首址为首址为首址连续分配连续分配连续分配连续分配4 4个字节的存储单元个字节的存储单元个字节的存储单元个字节的存储单元uSTR STR DBDB How are you?$How are you?$;定义定义定义定义字符串字符串字符串字符串uTWIN TWIN DBDB 5 5 DUPDUP(0FFH)(0FFH);连续分配连续分配连续分配连续分配5 5个字节个字节个字节个字节,初值均为初值均为初值均为初值均为0FFH0FFHu DBDB 100 100 DUPDUP(?)(?);连续分配连续分配连续分配连续分配100100个字节个字节个字节个字节单元,单元,单元,单元,初值不定初值不定初值不定初值不定微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学DB 与与DW的应用的应用DATA DATA SEGMENTSEGMENTARE1 ARE1 DBDB 20H 20H,30H 30H ARE2 ARE2 DWDW 2030H 2030HARE3 ARE3 DBDB A A,B B ARE4 ARE4 DWDW AB ABDATA DATA ENDSENDS41H41H42H42H42H42H41H41H20H20H30H30H30H30H20H20HARE1ARE1ARE2ARE2ARE3ARE3ARE4ARE4微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.4.2 程序结构伪指令程序结构伪指令u段定义语句段定义语句 SEGMENT/ENDSu用于对用于对 DS、ES、SS、CS 段的定义段的定义u语句格式:语句格式:段名段名段名段名 SEGMENT SEGMENT 定位选择定位选择定位选择定位选择 链接类型链接类型链接类型链接类型 类别标识类别标识类别标识类别标识符符符符 段名段名段名段名 ENDSENDSuENDS必须与必须与SEGMENT成对出现,且段名必须成对出现,且段名必须一致。一致。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学段定义的相关约定段定义的相关约定组合类型组合类型组合类型组合类型:表示与其它段的关系,为连接程序提供:表示与其它段的关系,为连接程序提供:表示与其它段的关系,为连接程序提供:表示与其它段的关系,为连接程序提供信息,可以有信息,可以有信息,可以有信息,可以有6 6种选择种选择种选择种选择:定位类型定位类型定位类型定位类型:规定段的:规定段的:规定段的:规定段的起始边界起始边界起始边界起始边界,有,有,有,有4 4种选择:种选择:种选择:种选择:PAGEPAGE:段起始地址的段起始地址的段起始地址的段起始地址的最低最低最低最低8 8位位位位必须为必须为必须为必须为0 0。PARAPARA:段起始地址的段起始地址的段起始地址的段起始地址的最低最低最低最低4 4位位位位必须为必须为必须为必须为0 0。WORDWORD:段起始地址的段起始地址的段起始地址的段起始地址的最低最低最低最低1 1位位位位必须为必须为必须为必须为0 0,即从偶地址开始。,即从偶地址开始。,即从偶地址开始。,即从偶地址开始。BYTEBYTE:段起始地址为段起始地址为段起始地址为段起始地址为任意值任意值任意值任意值,即从任何地址开始都行。,即从任何地址开始都行。,即从任何地址开始都行。,即从任何地址开始都行。缺省类型为缺省类型为缺省类型为缺省类型为PARAPARA。NONENONE:本段与其它段逻辑上本段与其它段逻辑上本段与其它段逻辑上本段与其它段逻辑上不发生关系不发生关系不发生关系不发生关系,每段都有自己,每段都有自己,每段都有自己,每段都有自己的基地址的基地址的基地址的基地址(缺省选择缺省选择缺省选择缺省选择)。PUBLICPUBLIC:连接程序首先将本段与其它连接程序首先将本段与其它连接程序首先将本段与其它连接程序首先将本段与其它同名同类别的段相同名同类别的段相同名同类别的段相同名同类别的段相邻地连接邻地连接邻地连接邻地连接在一起,然后为所有这些在一起,然后为所有这些在一起,然后为所有这些在一起,然后为所有这些PUBLICPUBLIC段指定一个段指定一个段指定一个段指定一个共同共同共同共同的段基址的段基址的段基址的段基址。连接的先后次序由连接命令指定。连接的先后次序由连接命令指定。连接的先后次序由连接命令指定。连接的先后次序由连接命令指定。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学STACKSTACK:与:与:与:与PUBLICPUBLIC同样处理,但此段作为堆栈段同样处理,但此段作为堆栈段同样处理,但此段作为堆栈段同样处理,但此段作为堆栈段,SSSS指指指指向第一个向第一个向第一个向第一个STACKSTACK段段段段。COMMONCOMMON:本段与其它本段与其它本段与其它本段与其它同名同类别段重叠同名同类别段重叠同名同类别段重叠同名同类别段重叠,段基址与最后,段基址与最后,段基址与最后,段基址与最后定义的相同,长度为同名段中最大段的长度。定义的相同,长度为同名段中最大段的长度。定义的相同,长度为同名段中最大段的长度。定义的相同,长度为同名段中最大段的长度。ATAT表达式:连接程序把本段装在表达式值所表达式:连接程序把本段装在表达式值所表达式:连接程序把本段装在表达式值所表达式:连接程序把本段装在表达式值所指定的段地址指定的段地址指定的段地址指定的段地址(此方式不能指定代码段)。(此方式不能指定代码段)。(此方式不能指定代码段)。(此方式不能指定代码段)。MEMORYMEMORY:同:同:同:同PUBLICPUBLIC连接程序将本段定位在被连接在一连接程序将本段定位在被连接在一连接程序将本段定位在被连接在一连接程序将本段定位在被连接在一起的其它所有段之上。起的其它所有段之上。起的其它所有段之上。起的其它所有段之上。类别类别:给各段的名字信息,连接程序将:给各段的名字信息,连接程序将类别名相类别名相同的段组成同的段组成一个段组用它们共同的名字作为这个一个段组用它们共同的名字作为这个段组的名字。类别必须用单引号括起来。段组的名字。类别必须用单引号括起来。段定义的相关约定段定义的相关约定例:例:例:例:STACKSTACK SEGMENT PARA STACK STACKSEGMENT PARA STACK STACK微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学段说明伪指令段说明伪指令ASSUMEASSUME 伪指令伪指令仅用在仅用在代码段首代码段首行行代码段名代码段名 SEGMENT 相关约定相关约定 ASSUME CS:段名,段名,DS:段名,段名,代码段内定义,指令集合代码段内定义,指令集合代码段名代码段名 ENDS例:例:例:例:ASSUMEASSUME DS DS:DATADATA,SSSS:STACKSTACK,CSCS:CODECODE微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学过程定义伪指令过程定义伪指令PROC FAR PROC FAR、ENDP ENDP 远远远远过程定义伪指令过程定义伪指令过程定义伪指令过程定义伪指令PROC NEARPROC NEAR、ENDP ENDP 近近近近过程定义伪指令过程定义伪指令过程定义伪指令过程定义伪指令过程名过程名过程名过程名 PROC FARPROC FAR(NEARNEAR)过程指令集合过程指令集合过程指令集合过程指令集合 RETRET过程名过程名过程名过程名 ENDPENDP注:过程定义必须在代码段内注:过程定义必须在代码段内注:过程定义必须在代码段内注:过程定义必须在代码段内 PROC FAR PROC FAR 为定义远过程为定义远过程为定义远过程为定义远过程 PROC NEAR PROC NEAR 为定义近过程为定义近过程为定义近过程为定义近过程微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学例例 4.30COD1COD1SEGMENTSEGMENTASSUMEASSUME CS:CS:COD1 COD1,;代码段中的其它语句(主程序)代码段中的其它语句(主程序)代码段中的其它语句(主程序)代码段中的其它语句(主程序)SUB1SUB1PROCPROC FARFAR;名为名为名为名为SUB1SUB1的的的的FARFAR过程开始过程开始过程开始过程开始 RETRET;返回返回返回返回SUB1SUB1ENDPENDP;SUB1;SUB1结束结束结束结束SUB2SUB2PROCPROC ;名为名为名为名为SUB2SUB2的的的的NEARNEAR过程开始过程开始过程开始过程开始 RETRET;返回返回返回返回SUB2SUB2ENDPENDP;SUB2;SUB2结束结束结束结束;可能定义的其它过程可能定义的其它过程可能定义的其它过程可能定义的其它过程COD1COD1ENDSENDS;代码段结束代码段结束代码段结束代码段结束微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学段内定位语句段内定位语句ORGu语句格式:语句格式:ORG 表达式或常量表达式或常量uORG语句之后段内所有的数据或代码均以语句之后段内所有的数据或代码均以表达式或常量的值为表达式或常量的值为起始偏移量起始偏移量连续存放,连续存放,除非遇到另一个除非遇到另一个ORG语句。语句。u此语句本身并不占内存。此语句本身并不占内存。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学例例DATADATA SEGMENTSEGMENTORGORG 0004H 0004HAVR1 DW 2030HAVR1 DW 2030HAVR2 DB 40HAVR2 DB 40HDWVR DW OFFSET AVR1DWVR DW OFFSET AVR1DDVR DD AVR2DDVR DD AVR2DATADATA ENDSENDS00H00H20H20H00H00H06H06H00H00H04H04H40H40H20H20H30H30HAVR1AVR1AVR2AVR2DWVRDWVRDDVRDDVR0004H0004H0006H0006H0007H0007H0009H0009H设设设设DATADATA的段首地址为的段首地址为的段首地址为的段首地址为2000H2000H微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学与宏有关的伪指令与宏有关的伪指令u为减少重复编写相同语句段的工作,我们为减少重复编写相同语句段的工作,我们可以使用可以使用“宏宏”功能功能u宏定义是指宏定义是指用一个标识符用一个标识符(宏名宏名)来)来代替代替一组指令序列一组指令序列(可同时包含指令性语句和(可同时包含指令性语句和指示性语句)指示性语句)u宏功能的使用过程是:宏功能的使用过程是:宏定义、宏调用、宏定义、宏调用、宏展开宏展开。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学u宏定义语句宏定义语句 MACRO/ENDMu宏取消语句宏取消语句PURGEu宏标号定义语句宏标号定义语句LOCALu重复汇编语句重复汇编语句RETP、IRP、IRPC微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学条件汇编伪指令条件汇编伪指令u条件汇编是指按照给定的条件对某部分指条件汇编是指按照给定的条件对某部分指定的源程序进行或不进行汇编。定的源程序进行或不进行汇编。u基本格式基本格式IF 条件条件;条件汇编开始条件汇编开始;语句体语句体1 ELSE ;语句体语句体2ENDIF;结束结束微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学结构定义伪指令结构定义伪指令STRUC、ENDSuu结构定义结构定义 结构名标识符结构名标识符结构名标识符结构名标识符 STRUCSTRUC 结构名标识符结构名标识符结构名标识符结构名标识符 ENDSENDS注:结构定义在数注:结构定义在数注:结构定义在数注:结构定义在数据段定义中完成据段定义中完成据段定义中完成据段定义中完成 结构变量定义并保留存储单元结构变量定义并保留存储单元结构变量定义并保留存储单元结构变量定义并保留存储单元 结构变量名结构变量名结构变量名结构变量名 结构名结构名结构名结构名 结构变量定义并赋值结构变量定义并赋值结构变量定义并赋值结构变量定义并赋值 结构变量名结构变量名结构变量名结构变量名 结构名结构名结构名结构名 结构字段名的引用结构字段名的引用结构字段名的引用结构字段名的引用结构变量名结构变量名结构变量名结构变量名.结构字段名结构字段名结构字段名结构字段名结构变量名指针结构变量名指针结构变量名指针结构变量名指针.结构字段名结构字段名结构字段名结构字段名微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学4.5 8086宏汇编语言程序设计技术宏汇编语言程序设计技术u与绝大多数高级语言与绝大多数高级语言相同相同的是的是:汇编语言是汇编语言是结构化结构化的语言。一个大的汇编源程序可以的语言。一个大的汇编源程序可以由多个由多个“模块模块”组成,而每个模块则由一组成,而每个模块则由一个或多个个或多个“段段”构成。构成。u与高级语言与高级语言不同不同,使用汇编语言编程时设,使用汇编语言编程时设计者需同时使用计者需同时使用指令指令和和伪指令伪指令。微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学汇编源程序的基本结构形式汇编源程序的基本结构形式u模块模块和和段段一个汇编一个汇编一个汇编一个汇编“模块模块模块模块”可以包含一个或几个长度小于可以包含一个或几个长度小于可以包含一个或几个长度小于可以包含一个或几个长度小于64KB64KB的的的的“段段段段”u8086只有只有4个个段寄存器(段寄存器(CS、DS、SS和和ES)CS:CS:程序段程序段程序段程序段DS:DS:数据段数据段数据段数据段SS:SS:堆栈段堆栈段堆栈段堆栈段ES:ES:附加段附加段附加段附加段(可选可选可选可选)微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学DATADATASEGMENTSEGMENT;定义数据段定义数据段定义数据段定义数据段D1D1DB 5 DUPDB 5 DUP(?)(?)(?)(?);连续的字节单元连续的字节单元连续的字节单元连续的字节单元CCCCEQU$EQU$D1D1;对单元计数对单元计数对单元计数对单元计数SUMSUMDW 0DW 0;为结果保留一个字为结果保留一个字为结果保留一个字为结果保留一个字DATADATAENDSENDS;数据段定义结束数据段定义结束数据段定义结束数据段定义结束STACK SEGMENT PARA STACK STACKSTACK SEGMENT PARA STACK STACK;定义堆栈段定义堆栈段定义堆栈段定义堆栈段DB 100 DUP DB 100 DUP(?)(?)(?)(?);100;100字节的栈空间字节的栈空间字节的栈空间字节的栈空间STACKSTACK ENDSENDS;堆栈段定义结束堆栈段定义结束堆栈段定义结束堆栈段定义结束CODECODE SEGMENTSEGMENT;定义代码段定义代码段定义代码段定义代码段ASSUMEASSUME DS:DATA DS:DATA,SS:STACKSS:STACK,CS:CODE CS:CODE ;对各段进行说明对各段进行说明对各段进行说明对各段进行说明BEGINBEGIN:MOV AXMOV AX,DATADATA;DSDS初始化初始化初始化初始化为为为为DATADATAMOV DSMOV DS,AXAXLEA SILEA SI,D1D1;预置源数据的指针预置源数据的指针预置源数据的指针预置源数据的指针回顾回顾 例例4.6定义存储单元定义存储单元的数据的数据伪伪指令指令定义堆栈定义堆栈段定义语句段定义语句段定义语句段定义语句指令指令微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术微机系统原理及接口技术电子科技大学电子科技大学电子科技大学电子科技大学MOV CXMOV CX,CCCC;预置次数预置次数预置次数预置次数LODS BYTE PTR SILODS BYTE PTR SI;取一个数并修改指针取一个数并修改指针取一个数并修改指针取一个数并修改指针MOV AHMOV AH,0 0;清;清;清;清AXAX的高字节的高字节的高字节的高字节CLCCLC;清;清;清;清CFCF位位位位AGANAGAN:ADC SUMADC SUM,AXAX;累加累加累加累加LODS BYTE PTR SILODS BYTE PTR SI;再取数并修改指针再取数并修改指针再取数并修改指针再取数并修改指针LOOP AGANLOOP AGAN;控制循环控制循环控制循环控制循环MOV AHMOV AH,4CH4CH;完成,返回完成,返回
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 临时分类 > 职业技能


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!