汇编语言程序结构.课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言程序结构.课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序结构 课件
- 资源描述:
-
1、教学重点本章重点掌握:程序的格式、开发方法参数的表达、变量的定义变量和标号的属性第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构第一章第一章 基础知识基础知识机器语言计算机能够直接识别并执行的二进制机器指令序列优点:开销小、运行速度快;缺点:难以编写和理解,编程效率很低。 汇编语言(Assembly Language) 用助记符号表示机器指令代码、变量地址,标号等的符号指令序列。优点:易记、易理解,易编写程序,大大提高了编程效率 ;问题:需要将助记符号翻译为机器语言。汇编语言源程序:用汇编语言编写的程序。汇编程序:将助记符号翻译为机器语言的语言处理程序,以便 计算机
2、能够识别。汇编:将助记符号翻译为机器语言的过程。理解以上几个名词概念: 汇编语言、汇编语言源程序、汇编程序、汇编概概 念念第一节:汇编程序功能及上机过程 汇编程序功能 汇编程序的主要功能如下:(1)检测语法错 显示错误信息(2)源程序文件 二进制目标文件(并输出*.LST文件)(3)展开宏指令一般汇编程序都应具有如下功能: 宏汇编功能 支持地址和数据的符号表示 支持内存管理 支持程序的模块化组织 支持多种类型的数据表示等 汇编程序依赖于硬件,不同机型的系统有自己的汇编程序。 上机过程 上机过程如图所示第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构汇编语言源程序的结
3、构与书写格式汇编语言源程序是段结构的:代码段、数据段、堆栈段、附加段 源程序由段组成,每段有一个段名,segment定义段起点,ends定义段结束点。每段由若干语句行组成,源程序以end结束。 例字符串传送指令和伪指令使CPU产生动作、并在程序执行时才处理的语句,就是前一章学习的处理器指令(Directive)不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等 伪指令与具体的处理器类型无关,但与汇编程序的版本有关 本课程采用微软宏汇编程序本课程采用微软宏汇编程序 MASM 5.0MASM 5.0汇编语言语句一般格式为: 标识符/语句标号 指令名 操作数序列
4、;注释 标识符用来为变量、段及过程等命名 语句标号标识符后加 : ,提供转移地址指令名指令可分为三类:机器指令、伪指令和宏指令。 机器指令:指令系统中的指令,程序运行时由CPU执行; 伪指令:汇编程序执行的操作,规定汇编程序如何按要求进行汇编及分配内存 。宏指令:由一系列指令或伪指令构成,汇编时展开成若干条机器指令,用于提高编程效率。 操作数序列可以是常量、变量、表达式、寄存器名或标号等,用逗号隔开。(伪指令和宏指令由汇编程序在汇编期间处理伪指令和宏指令由汇编程序在汇编期间处理 )注释符 “;”后可给出语句注释,提高可读性和可理解性。第二节:汇编语言语句格式与分类第二节:汇编语言语句格式与分类
5、 (1)常量 00110110B 389D 467O B407H 3.475E+5 Input a number(2)变量 变量名:存储单元的符号地址 变量值:存储单元中的数据MOV AL, Amov al, a变量的三种属性: 段值(SEG):变量所在段的起始地址 偏移量(OFFSET):段起点距离变量所在存储单 元位置的字节数50偏移量段起点类型(TYPE):变量占用的字节数常量、变量、标号常量、变量、标号(3)标号 标号:存放指令的存储单元的符号地址,常用作转移地址。NEAR :2字节转移地址 CMP AX,BX JNE NEXT NEXT: MOV AX,0 标号的三种属性: 段值(S
6、EG):标号所在段的起始地址 偏移量(OFFSET):段起点距离标号所指存储单 元位置的字节数 类型(TYPE): NEAR , FAR(偏移地址) 短指针(近指针) 段内转移FAR :4字节转移地址 (段、偏移地址) 长指针(远指针) 段间转移第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构汇编语言程序的语句类型:汇编语言程序的语句类型:1、程序执行指令语句。、程序执行指令语句。2、伪操作语句。、伪操作语句。 3、宏指令语句。、宏指令语句。 伪操作的功能:伪操作的功能:伪操作又称为伪指令,它不象机器指令那样是在程序运行期间由伪操作又称为伪指令,它不象机器指令那样是
7、在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,它计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,它们可以完成如下功能:们可以完成如下功能: (1 1)符号定义伪指令)符号定义伪指令 (2 2)数据定义伪指令)数据定义伪指令 (3 3)段定义伪指令)段定义伪指令 (4 4) 过程定义伪指令过程定义伪指令 (5 5)条件汇编伪指令)条件汇编伪指令 (6 6)宏指令)宏指令 (7 7)结构与记录)结构与记录 一、一、数据定义及存储器分配伪操作数据定义及存储器分配伪操作 格式:Variable Mnemonic Operand , , Oper
8、and ;Comments 变量(变量(Variable)字段:)字段:是可有可无的,它用符号地址表示,其作用与指令语句是可有可无的,它用符号地址表示,其作用与指令语句前的标号相同,但它的后面不跟冒号。如果语句中有变量则汇编程序使其记以第前的标号相同,但它的后面不跟冒号。如果语句中有变量则汇编程序使其记以第一个字节的偏移地址。一个字节的偏移地址。 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构注释(Comments)字段:用来说明该伪操作的功能,它也是可有可无的。助记符(Mnemonic)字段:说明所用伪操作的助记符,常用的有以下几种: DB伪操作:伪操作:用来定
9、义字节,其后的每个操作数都占有一个字节。用来定义字节,其后的每个操作数都占有一个字节。DW的操作:的操作:用来定义字,其后的每个操作数占有一个用来定义字,其后的每个操作数占有一个字字(低位字节低位字节在第一个字节地址中,在第一个字节地址中,高位字节在第二个字节地址中高位字节在第二个字节地址中)。 DD伪操作:伪操作:用来定义双字,其后的每个操作数占有二个字。用来定义双字,其后的每个操作数占有二个字。DQ伪操作:伪操作:用来定义四个字,其后的每个操作数占有四个字。用来定义四个字,其后的每个操作数占有四个字。DT伪操作:伪操作:用来定义十个字节,其后的每个操作数占有十个字节用来定义十个字节,其后的
10、每个操作数占有十个字节,形成压缩的,形成压缩的BCD码。码。这些伪操作可以把其后面跟着的数据存入指定的存储单元,或者只分配存储器空这些伪操作可以把其后面跟着的数据存入指定的存储单元,或者只分配存储器空间而并不存入确定的数值。间而并不存入确定的数值。DW和和DD伪操作可以存储偏移地址或完整的地址伪操作可以存储偏移地址或完整的地址 。第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构例例 操作数可以是常数,或者是表达式操作数可以是常数,或者是表达式(根根据该表达式可以求得一个常数据该表达式可以求得一个常数),如,如 DATA_BYTE DB 10,4,l0H DATA_W
11、ORD DW 100,100H,-5 DATADW DD 3*20,0FFFDH汇编程序可以在汇编期间在存储器中存入汇编程序可以在汇编期间在存储器中存入数据,如右图所示。数据,如右图所示。 例例 操作数也可以是字符串,如:操作数也可以是字符串,如: MESSAGE DB H2LLOMESSAGE DB H2LLO则存储器存储情况如下图所示:则存储器存储情况如下图所示: 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构注意:注意:DB AB和和DW AB的存储的存储 分配空间的不同。如下图:分配空间的不同。如下图:例例 操作数?可以保留存储空间,但不存操作数?可以保留
12、存储空间,但不存入数据。入数据。如:如:ABC DB 0,?, ?, ?,0 DFF DW ?, 52, ?经汇编后的存储情况如右图所示。经汇编后的存储情况如右图所示。 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构 操作数字段还可以使用复制操作符来复制某个(或某些)操作数。其格式为操作数字段还可以使用复制操作符来复制某个(或某些)操作数。其格式为: repeat_count DUP(operate, operate,) 其中其中repeat_count可以是一个表达式,可以是一个表达式,它的值应该是一个正整数,用来指定括号它的值应该是一个正整数,用来指定括号中的
13、操作数的重复次数。中的操作数的重复次数。 例例 ARRAYl DB 2 DUP(0, 1,2,?,?) ARRAY2 DB 100 DUP(?) 汇编后的存储情况如下图所示。汇编后的存储情况如下图所示。 ARRAYl DB 2 DUP(0, 1,2,?,?)和以下语句是等价的:和以下语句是等价的:ARRAYl DB 0,I,2,?,0,1,2,? 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构例例 DUP操作可以嵌套,例如操作可以嵌套,例如ARRAY3 DB 100DUP(0,2 DUP(1,2),0,3) 则汇编结果如右图所示:则汇编结果如右图所示: 可以用可以
14、用DW或或DD伪操作把变量或标号的偏移地址伪操作把变量或标号的偏移地址(DW)或整个地址或整个地址(DD)存入存储器。用存入存储器。用DD伪操作存入伪操作存入地址时,第一个字为偏移地址,第二个字为段地址。地址时,第一个字为偏移地址,第二个字为段地址。 例如例如 PARAMETER_TABLE DW PAR1 DW PAR2 DW PAR3 INTERSEG_DATA DD DATA1 DD DATA2则汇编后的存储情况如下图所示。其中偏移地址或段地址则汇编后的存储情况如下图所示。其中偏移地址或段地址均占有一个宇,其低位字节占有第一个字节,高位字节占均占有一个宇,其低位字节占有第一个字节,高位字
15、节占有第二个字节。有第二个字节。 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构顺便说明一下,这里操作数字段中的变量或标号可以使用表达式如顺便说明一下,这里操作数字段中的变量或标号可以使用表达式如 :在这种情况下,汇编后,存储器中应该存入表达式的值。在这种情况下,汇编后,存储器中应该存入表达式的值。例如例如 PARAMETER_TABLE DW PAR1+1 DW PAR2+1 说明变量的类型属性问题说明变量的类型属性问题 : 在数据定义伪操作前面的变量的值是该伪操作中的第一个数据项在当前
16、在数据定义伪操作前面的变量的值是该伪操作中的第一个数据项在当前段内的第一个字节的偏移地址。此外,它还有一个类型属性用来表示该语句段内的第一个字节的偏移地址。此外,它还有一个类型属性用来表示该语句中的每一个数据项的长度中的每一个数据项的长度(以字节为单位表示以字节为单位表示),因此,因此DB伪操作的类型属性为伪操作的类型属性为1,DW为为2,DD为为4,DQ为为8,DT则为则为10,变量表达式的属性和变量是相同的。,变量表达式的属性和变量是相同的。 汇编程序可以用这种隐含的类型属性来确定某些指令是字指令还是字节汇编程序可以用这种隐含的类型属性来确定某些指令是字指令还是字节指令。指令。 第一章第一
17、章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构例如例如 OPER1 DB ?,?,? OPER2 DW ?,?,? MOV OPER1, 0 MOV OPER1, 0 MOV OPER2, 0 MOV OPER2, 0 则第一条指令应为字节指令,第则第一条指令应为字节指令,第二条指令则应为字指令。二条指令则应为字指令。 如果有下列指令序列如果有下列指令序列 : OPER1 DB 1,2 OPER2 DW 1234H,2345H MOV AX ,OPER1+1 MOV AL ,OPER2 汇编程序在汇编这一段程序时,能发汇编程序在汇编这一段程序时,能发现两条现两条MOV指令的
18、两个操作数的类型属指令的两个操作数的类型属性是不相同的:性是不相同的: OPERl十十1为字节类型属性而为字节类型属性而AX为字为字类型属性;类型属性; OPER2为字类型属性而为字类型属性而AL为字节类为字节类型属性。型属性。汇编语言将指示由于属性类型不匹配出错。汇编语言将指示由于属性类型不匹配出错。 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构有一个办法可以指定操作数的类型属性,有一个办法可以指定操作数的类型属性,它优先于隐含的类型属性,即可以使用它优先于隐含的类型属性,即可以使用PTR属性操作符属性操作符。其格式为:。其格式为: type PTR Vari
19、ble士士 constant expression其中类型可以 是其中类型可以 是 BYTE, WORD或或DWORD(双字双字),这样变量的类型就可以,这样变量的类型就可以指定了。上面例子可以写为:指定了。上面例子可以写为: OPER1 DB 1,2 OPER2 DW 1234H,2345H MOV AX ,WORD PTR OPER1+1 MOV AL ,BYTE PTR OPER2 通过通过PTR属性操作符就把属性操作符就把OPER1十十1的类型属性指定为字,两个操作数的的类型属性指定为字,两个操作数的属性就一致了,汇编时不会出错,而属性就一致了,汇编时不会出错,而运行时应把运行时应把O
20、PER1十十1的字内容送到的字内容送到AX,即把,即把OPER1十十1的内容送的内容送AL,把把OPER2的第一个字节的内容运的第一个字节的内容运AH,所以指令执行完后,所以指令执行完后,(AX)3402H。同样,对于第二条语句(同样,对于第二条语句(AL)=34H 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构LABEL伪操作伪操作 :除了用属性操作符给以定义外,还可以用除了用属性操作符给以定义外,还可以用LABEL伪操作来定义,其格式为:伪操作来定义,其格式为: name LABEL type (1) 对于数据项可以表示为:对于数据项可以表示为: variab
21、le_name LABEL type其中,其中,type可以是可以是BYTE,WORD或或DWORD(双字双字)。( 2)对于可执行的代码,则可表示为)对于可执行的代码,则可表示为 label_name LABEL type其中,其中,type可以是可以是NEAR或或FAR。第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构例如例如4.9 BYTE_ARRAY LABEL BYTE WORD_ARRAY DW 50 DUP(?)这样在这样在100个字节数组中的第一个字节的地址赋于二个不同类型的变量名:个字节数组中的第一个字节的地址赋于二个不同类型的变量名:字节类型的变
22、量字节类型的变量BYTE_ARRAY和字类型变量和字类型变量WORD_ARRAY。指令指令 MOV WORD_ARRAY十十2. , 0把该数组的第把该数组的第3个和第个和第4个字节置个字节置0,而,而 MOV BYTE_ARRAY十十2. , 0则把该数组的第则把该数组的第3个字节置个字节置0。 例:例: LABF LABEL FARLABF LABEL FAR LAB LAB: MOV AXMOV AX,100 100 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构二、表达式赋值伪操作二、表达式赋值伪操作EQU 有时程序中多次出现同一个表达式为方便起见可以用赋
23、值伪操作给表达式有时程序中多次出现同一个表达式为方便起见可以用赋值伪操作给表达式赋予一个名字,其格式如下:赋予一个名字,其格式如下: 此后,程序中凡需要用到该表达式之处就可以用表达式名来代替了。此后,程序中凡需要用到该表达式之处就可以用表达式名来代替了。上式中的表达式上式中的表达式可以是任何有效的操作数格式可以是任何有效的操作数格式,可以是任何可以求出常数值的表可以是任何可以求出常数值的表达式,也可以是任何有效的助记符。达式,也可以是任何有效的助记符。举例如下:举例如下: 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构必须注意必须注意EQU语句的表达式中如果有变量
24、或标号的表达式,则在该语句前应该语句的表达式中如果有变量或标号的表达式,则在该语句前应该先给出它们的定义。先给出它们的定义。例如,语句例如,语句 :则必须放在则必须放在DATA_ONE的定义之后才行,否则汇编程序将指示出错。的定义之后才行,否则汇编程序将指示出错。 另外还有一个与另外还有一个与EQU相类似的相类似的 = 伪操作也可以作为赋值伪操作使用。伪操作也可以作为赋值伪操作使用。它们它们之间的区别是之间的区别是:EQU伪操作中的表达式名是不允许重复定义的,而伪操作中的表达式名是不允许重复定义的,而 = 伪操作则伪操作则允许重复定义。允许重复定义。例如:例如: EMP = 6 或或 EMP
25、EQU 6都可以使数都可以使数6赋以符号名赋以符号名EMP,但是不允许两,但是不允许两者同时使用。者同时使用。 第一个语句后的指令中第一个语句后的指令中EMP值为值为7;而第二个语句后的指令中;而第二个语句后的指令中EMP值为值为8。 第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构三、段定义伪操作三、段定义伪操作 存储器的物理地址是由段地址和偏移地址组合而成的,汇编程序在把源程存储器的物理地址是由段地址和偏移地址组合而成的,汇编程序在把源程序转换为目标程序时,必须确定标号和变量的偏移地址,并且需要把有关信息序转换为目标程序时,必须确定标号和变量的偏移地址,并且需要
展开阅读全文