51465汇编语言程序设计第四章汇编语言程序格式.ppt
《51465汇编语言程序设计第四章汇编语言程序格式.ppt》由会员分享,可在线阅读,更多相关《51465汇编语言程序设计第四章汇编语言程序格式.ppt(152页珍藏版)》请在三一办公上搜索。
1、第四章 汇编语言程序格式,河南师范大学计算机与信息技术学院,2,2023/3/4,硬指令和伪指令,硬指令:使CPU产生动作、并在程序执行时才处理的语句。就是第3章学习的处理器指令。,伪指令(伪操作:Directive):不产生CPU动作、在程序执行前由汇编程序处理的说明性语句。例如,处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束等等。,伪指令与具体的处理器类型无关,但与汇编程序的版本有关。,河南师范大学计算机与信息技术学院,3,2023/3/4,本章内容提要,河南师范大学计算机与信息技术学院,4,2023/3/4,4.1 汇编语言程序的开发,河南师范大学计算机与信息技术学院,5,
2、2023/3/4,4.1.1 汇编程序功能,河南师范大学计算机与信息技术学院,6,2023/3/4,1.汇编语言程序的建立及汇编过程,在计算机上运行汇编语言程序的步骤是:,用编辑程序建立ASM源文件;,汇编语言程序的建立及汇编过程,如图4.1所示。,用MASM程序把ASM文件转换成OBJ文件;,用LINK程序把OBJ文件转换成EXE文件;,用DOS命令直接键入文件名就可执行该程序。,河南师范大学计算机与信息技术学院,7,2023/3/4,2.汇编程序的主要功能,检查源程序。,测出源程序中的语法错误,并给出出错信息。,产生源程序的目标程序,并可给出列表文件(同时列出汇编语言和机器语言的文件,称为
3、LST文件)。,展开宏指令。,河南师范大学计算机与信息技术学院,8,2023/3/4,3.常用的汇编程序,Microsoft公司推出的宏汇编程序MASM(Macro Assembler);,Borland公司推出的TASM(Turbo Assembler)。,本课程采用MASM6.11。,河南师范大学计算机与信息技术学院,9,2023/3/4,4.1.2 汇编语言程序的语句格式,汇编语言语句格式:,说明性语句由伪指令构成的语句,它通常指示汇编程序如何汇编源程序:,执行性语句由硬指令构成的语句,它通常对应一条机器指令,出现在程序的代码段中:,nameoperation operand;comme
4、nt,标号:硬指令助记符 操作数,操作数;注释,名字 伪指令助记符 参数,参数,;注释,河南师范大学计算机与信息技术学院,10,2023/3/4,1.名字(name)项,源程序中用下列字符来表示名字项(name):,注意:,字母AZ数字09专用字符?,$,名字不能以数字开头。名字中如果用到,则必须是第一个字符。汇编程序只识别名字的前31个字符。默认情况下,汇编程序不区别标识符中的字母大小写。,河南师范大学计算机与信息技术学院,11,2023/3/4,1.名字(name)项,name可以是标号或变量。它们都用来表示本语句的符号地址,都是可有可无的,只有当需要用到符号地址来访问该语句时,它才需要出
5、现。,标号:,在代码段中定义,是反映硬指令位置(逻辑地址)的标识符,后跟一个冒号分隔。经常在转移指令或CALL指令的操作数字段出现,用以表示转向地址。,河南师范大学计算机与信息技术学院,12,2023/3/4,1.名字(name)项,名字:,标识符(Identifier):,每个标识符的定义是唯一的,还不能是汇编语言采用的保留字。,是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号。,可用LABEL或EQU伪操作来定义。,还可以作为过程名定义(第六章中介绍)。,河南师范大学计算机与信息技术学院,13,2023/3/4,2.保留字,保留字(Reserved Word)是汇
6、编程序已经利用的标识符,主要有:,硬指令助记符例如:MOV、ADD伪指令助记符例如:DB、EQU操作符例如:OFFSET、PTR寄存器名例如:AX、CS预定义符号例如:data,河南师范大学计算机与信息技术学院,14,2023/3/4,3.指令助记符,硬指令助记符可以是任何一条处理器指令,也可以是一条宏指令。,伪指令助记符将在本章和下章学习。,前一章引入的定义字节数据和字符串的DB就是伪指令。,河南师范大学计算机与信息技术学院,15,2023/3/4,4.操作数与参数,处理器指令的操作数可以是立即数、寄存器和存储单元。,伪指令的参数可以是常数、变量名、表达式等,可以有多个,参数之间用逗号分隔。
7、,河南师范大学计算机与信息技术学院,16,2023/3/4,5.注释(comment)项,用来说明程序或语句的功能。,汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理。,;为注释的开始。,;可以从一行的第一个字符开始,此时整行都是注释,常用来说明下面一段程序的功能。,河南师范大学计算机与信息技术学院,17,2023/3/4,6.分隔符,语句的4个组成部分要用分隔符分开。,其他部分通常采用空格或制表符。,标号后用冒号,注释前用分号。,操作数之间和参数之间使用逗号分隔。,多个空格和与一个制表符的作用相同。,MASM支持续行符“”。,河南师范大学计算机与信息技术学院,18,2023/3/4,4
8、.1.3 汇编语言程序的程序格式,完整的汇编语言源程序由段组成。,一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列。,需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点。,所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内。,通常,程序还需要一个堆栈段。,汇编语言源程序段定义格式有两种:简化段定义格式从MASM 5.0开始支持 完整段定义格式MASM 5.0以前就具有,河南师范大学计算机与信息技术学院,19,2023/3/4,4.1.3 汇编语言程序的程序格式,Mainprocfarassumec
9、s:program,ds:datareaStart:push dssub ax,axpush axmov ax,datareamov ds,axretMainendp,首先把DS的内容和0作为段地址和偏移地址入栈,以便在程序结束时用RET指令返回DOS,这是一种工作方式。,mov ax,4c00hint 21h,如果在主程序开始时没有这三条指令在堆栈段建立返回信息,则在程序结束时就不能直接用RET返回指令,而应该用DOS功能调用4CH:,河南师范大学计算机与信息技术学院,20,2023/3/4,4.1.4 汇编语言程序的上机过程,1.建立汇编语言的工作环境,2.建立ASM文件;,3.用MASM
10、程序产生OBJ文件;,4.用LINK程序产生EXE文件;,5.程序的执行。,河南师范大学计算机与信息技术学院,21,2023/3/4,1.建立汇编语言的工作环境,为运行汇编语言程序至少要在磁盘上建立以下文件:,必要时,还可建立如CREF.EXE,EXE2BIN.EXE等文件。,编辑程序,如EDIT.EXE汇编程序,如MASM.EXE连接程序,如LINK.EXE调试程序,如DEBUG.COM,河南师范大学计算机与信息技术学院,22,2023/3/4,2.建立ASM文件,用编辑程序EDIT在磁盘上建立如下的源程序EX_MOVS.ASM。,例4.30 把40个字母a的字符串从源缓冲区传送到目的缓冲区
11、。,河南师范大学计算机与信息技术学院,23,2023/3/4,3.用MASM程序产生OBJ文件,用汇编程序对源程序文件汇编,产生二进制的目标文件(.OBJ文件),其操作与汇编程序回答如下:,Cmasm ex_movsMicrosoft(R)Macro Assembler Version 5.00Copyritht(C)Microsoft Corp 1981-1985,1987,All rights reserved.Object filename ex_movs,obj:Source listing NUL.LST:ex_movsCross-reference NUL.CRF:ex_movs5
12、1646+447778 Bytes symbol space free0 Warning Errors0 Severe Errors,河南师范大学计算机与信息技术学院,24,2023/3/4,3.用MASM程序产生OBJ文件,例4.30的列表文件EX_MOVS.LST。,这个文件同时列出了源程序和机器语言程序清单,并给出符号表,方便程序调试。这个文件可有可无,如果不需要,则直接在 NUL.LST:后敲回车;否则,可回答文件名,这里是ex_movs。,程序请看教材P148-151。,河南师范大学计算机与信息技术学院,25,2023/3/4,4.用LINK程序产生EXE文件,OBJ文件不是可执行文
13、件,还需要用连接程序LINK把OBJ文件转换为可执行的EXE文件。,Clink ex_movsMicrosoft(R)Macro Assembler Version 5.00Copyritht(C)Microsoft Corp 1981-1985,1987,All rights reserved.Run File EX_MOVS.EXE:List File NUL.MAP:ex_movsLibraries.LIB:LINK:Warning L4021:no stack segment,如果一个程序是由多个模块组成时,也要通过连接程序LINK把它们连接在一起,操作方法及机器回答如下:,河南师范大
14、学计算机与信息技术学院,26,2023/3/4,4.用LINK程序产生EXE文件,LINK程序有两个输入文件OBJ和LIB。,LINK程序有两个输出文件EXE和MAP。,OBJ是需要连接的目标文件;LIB是程序中要用到的库文件,如无需要,则直接敲回车。,EXE是最后得到的可执行文件;直接敲回车。MAP是连接程序的列表文件,又称为连接映像(link map),它给处每个段在存储器中的分配情况。,例4.30的连接映像EX_MOVS.MAP文件,河南师范大学计算机与信息技术学院,27,2023/3/4,5.程序的执行,在建立了EXE文件后,就可以直接从DOS执行程序,如下所示:,如果用户程序中,有在
15、终端显示结果的语句,则程序运行结束,可在终端看到运行结果。,程序运行结束并返回DOS。,EX_MOVS程序没有显示结果的语句,则可通过调试程序DEBUG的D命令来检查附加段是否已得到了从源缓冲区传来的40个字母a。,Cex_movsC,河南师范大学计算机与信息技术学院,28,2023/3/4,4.2 参数、变量、标号及相关伪操作,河南师范大学计算机与信息技术学院,29,2023/3/4,4.2.1 数值型参数,参数是指令的操作对象(在学习硬指令时被称为操作数),由一个或多个表达式组成,参数之间用逗号分隔。,参数根据指令不同可以没有,可以有1个、2个或多个。,汇编语言程序中,参数可以是常数、寄存
16、器、标号、变量或由表达式组成。,指令参数有数值型,它的主要形式是常数和数值表达式。,硬指令的操作数有立即数;立即数就要用数值型参数表达。,河南师范大学计算机与信息技术学院,30,2023/3/4,4.2.1 数值型参数,河南师范大学计算机与信息技术学院,31,2023/3/4,1.常数,常数(常量)表示一个固定的数值。,它又分成多种形式:,十进制常数,表达式赋值伪操作EQU,十六进制常数,二进制常数,字符串常数,符号常数,基数控制伪操作,河南师范大学计算机与信息技术学院,32,2023/3/4,(1)十进制常数,由0 9数字组成,以字母D或d结尾。,缺省情况下,后缀D或d可以省略。,汇编语言大
17、小写不敏感,D和d通用。,例如:100、255D,河南师范大学计算机与信息技术学院,33,2023/3/4,(2)十六进制常数,由09、AF组成,以字母H或h结尾。,以字母AF开头的十六进制数,前面要用0表达,以避免与其他符号混淆。,汇编语言大小写不敏感,H和h 通用,例如:64H、0FFh、0B800H,河南师范大学计算机与信息技术学院,34,2023/3/4,(3)二进制常数,由0或1两个数字组成,以字母B或b结尾。,汇编语言大小写不敏感,B和b通用。,例如:01101100B,河南师范大学计算机与信息技术学院,35,2023/3/4,(4)八进制常数,由0 7数字组成,以字母Q或q结尾。
18、,汇编语言大小写不敏感,Q和 q 通用。,例如:144Q,各种进制的数据以后缀字母区分,默认不加后缀字母的是十进制数。,河南师范大学计算机与信息技术学院,36,2023/3/4,(5)基数控制伪操作,MASM提供基数控制.RADIX伪指令可以改变默认进制,其格式是:.RADIX n,其中,n用来表示基数值(用十进制数表示)。,例如:MOVBX,0FFH.RADIX16与MOV BX,178MOVBX,0FFHMOVBX,178D是等价的。,.RADIX 16把基数定位十六进制后,十进制数后面都应跟字母D。如果某个十六进制数的末字符为D,则应在其后跟字母H,以免与十进制数发生混淆。,河南师范大学
19、计算机与信息技术学院,37,2023/3/4,(6)字符串常数,用单引号或双引号括起来的单个字符或多个字符,其数值是每个字符对应的ASCII码的值。,例如:d=64HAB=4142HHello,Everybody!,河南师范大学计算机与信息技术学院,38,2023/3/4,(7)符号常数,利用一个标识符表达的一个数值。,MASM提供等价机制,用于常量定义。,符号定义伪指令:,常数若使用有意义的符号名来表示,可以提高程序的可读性,同时更具有通用性。,等价EQU伪指令,等号=伪指令,河南师范大学计算机与信息技术学院,39,2023/3/4,(8)表达式赋值伪操作EQU,符号定义伪指令:用于常量定义
20、,利用一个标识符表达的一个数值。,等价EQU伪指令:Expression_name EQU Expression,符号名 EQU 数值表达式符号名 EQU,其中符号名不允许重复定义。,等号=伪指令,符号名=数值表达式,符号名允许重复定义。,常数若使用有意义的符号名来表示,可以提高程序的可读性,同时更具有通用性。,二者区别,示例2,示例1,河南师范大学计算机与信息技术学院,40,2023/3/4,2.数值型表达式,数值表达式一般是指由运算符连接的各种常数所构成的表达式。,MASM对除伪指令外各种汇编时处理的指令统称为操作符(Operator)。,程序运行之前,就已经计算出了表达式;所以,程序运行
21、速度没有变慢,但增强程序的可读性。,汇编程序在汇编过程中计算表达式,最终得到一个数值。,河南师范大学计算机与信息技术学院,41,2023/3/4,运算符,算术运算符+-*/MOD,逻辑运算符AND OR XOR NOT,移位运算符SHL SHR,关系运算符EQ NE GT LT GE LE,高低分离符HIGH LOW HIGHWORD LOWWORD,河南师范大学计算机与信息技术学院,42,2023/3/4,(1)算术运算符,实现加、减、乘、除、取余的算术运算mov ax,3*4+5;等价于 mov ax,17,其中MOD也称为取模,它产生除法之后的余数,如19 mod 7=5,加+和减-运算
22、符还可以用于地址表达式。,示例1,除加、减外,其他运算符的参数必须是整数。,两个地址相乘、相除是无意义的;两个不同段的地址相加也是无意义的。经常使用的是地址数字量,它是有意义的。,示例2,河南师范大学计算机与信息技术学院,43,2023/3/4,(2)逻辑运算符,实现按位相与、相或、异或、求反的逻辑运算。or al,03h AND 45h;等价于 or al,01h,示例,河南师范大学计算机与信息技术学院,44,2023/3/4,(3)移位运算符,实现对数值的左移、右移的逻辑操作;移入低位或高位的是0。,格式为:数值表达式 SHL/SHR 移位次数,若移位次数大于15,则结果为0。,例如:mo
23、v al,0101b SHL(2*2);等价于 mov al,01010000b,河南师范大学计算机与信息技术学院,45,2023/3/4,(4)关系运算符,用于比较和测试符号数值。,关系运算符的两个操作数必须是数字,或是同一段内的两个存储器地址。,MASM用0FFFFH(补码-1)表示条件为真。,MASM用0000H表示条件为假。,示例,河南师范大学计算机与信息技术学院,46,2023/3/4,(5)高低分离符,取数值的高半部分或低半部分。,HIGH、LOW字节分离符:从一个字数值或符号常量中得到高、低字节。,HIGHWORD、LOWWORD字分离符:从MASM 6.0引入的,取一个符号常量
24、(不能是其他常数)的高字或低字部分。,示例,河南师范大学计算机与信息技术学院,47,2023/3/4,3.运算符的优先级,1()LENGTH SIZE WIDTH MASK2PTR OFFSET SEG TPYE THIS:3HIGE LOW4*/MOD SHL SHR5+-6EQ NE GT LT GE LE7NOT8AND9OR XOR10SHORT,建议采用圆括号“()”显式表达,它可以极大地提高程序的可阅读性。,河南师范大学计算机与信息技术学院,48,2023/3/4,4.地址型参数,汇编语言程序中,指令参数还有地址型,它的主要形式是标号和名字(变量名、段名、过程名等)。,硬指令的操作
25、数有存储单元;存储单元就应该用地址型参数(存储器操作数)表达。,河南师范大学计算机与信息技术学院,49,2023/3/4,4.2.2 数据定义及存储器分配伪操作,该类伪操作又称变量定义伪指令。,变量定义(Define)伪指令为变量申请固定长度的存储空间,并可同时将相应的存储单元初始化。变量名 伪指令助记符 初值表,格式:Variable Mnemonic Operand,Operand;Commnet,河南师范大学计算机与信息技术学院,50,2023/3/4,变量名(variable),变量名为用户自定义标识符,表示初值表首元素的逻辑地址;用这个符号表示地址,常称为符号地址。,变量名可以没有。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51465 汇编语言 程序设计 第四 程序 格式
链接地址:https://www.31ppt.com/p-2935817.html