您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 4 汇编语言的基本表达及其运行
4汇编语言的基本表达及其运行主讲:傅中君本章主要教学内容汇编语言和汇编程序的基本概念汇编语言源程序书写规则、语句格式及程序分段伪指令语句的格式、功能及应用汇编语言源程序的建立、汇编、连接、调试及运行本章教学目的及要求理解汇编语言和汇编程序的概念、特点及其应用。掌握汇编语言源程序的书写规则、语句的基本格式、程序的分段结构。熟悉汇编语言的基本表达、伪指令语句及其应用。熟悉汇编语言程序的上机运行、调试过程,掌握基本操作技能。4汇编语言的基本表达及其运行4.1汇编语言和汇编程序的基本概念4.2汇编语言源程序书写格式4.38086汇编语言中的标识符、表达式和运算符4.5汇编语言程序上机过程4.4伪指令语句4.6汇编语言程序运行实例4.1汇编语言和汇编程序的基本概念4.1.1汇编语言汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址,因而易记、易读、易修改,给编程带来很大方便。用汇编语言编写的程序能够直接利用硬件系统的特性,直接对位、字节、字寄存器、存储单元、I/O端口等进行处理,同时也能直接使用CPU指令系统和指令系统提供的各种寻址方式编制出高质量的程序,这种程序不但占用内存空间少,而且执行速度快。4.1.2汇编程序用汇编语言编写的源程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程称为汇编,完成汇编任务的程序称为汇编程序。有基本汇编ASM(Assembler)和宏汇编MASM(MacroAssembler)两种。汇编程序以汇编语言源程序文件作为输入,并由它产生两种输出文件:目标程序文件和源程序列表文件。目标程序文件经连接定位后由计算机执行;源程序列表文件将列出源程序、目标程序的机器语言代码及符号表4.2汇编语言源程序书写格式4.2.1汇编语言源程序的分段结构通常,一个汇编源程序一般应该由3个逻辑段组成,即数据段、堆栈段和代码段。每个逻辑段以SEGMENT语句开始,以ENDS语句结束。整个源程序以END语句结束。数据段用来在内存中建立一个适当容量的工作区,以存放常数、变量等操作数据。堆栈段用来在内存中建立一个适当的堆栈区,以便在中断、子程序调用时使用。代码段包括了许多以符号表示的指令,其内容就是程序要执行的指令。4.2.2汇编语言源程序的语句类型和语句格式1.语句类型8086宏汇编MASM使用的语句可以分成3种类型:指令语句:这类指令能够产生目标代码,是CPU可以执行的能够完成特定功能的语句,主要由机器指令组成。在汇编时一条指令语句被翻译成对应的机器码,对应着特定的操作。伪指令语句:伪指令语句是为汇编程序和连接程序提供一些必要控制的管理性语句,它不产生目标代码,仅仅在汇编过程中告诉汇编程序应如何汇编,并完成相应的伪操作。宏指令语句:宏指令语句是由编程者按照一定的规则来定义的一种较“宏大”的指令,可包括多条指令或伪指令。2.语句格式一般情况下,汇编语言的语句可以由以下几部分组成:[名字]操作符[操作数][;注释]名字是一个符号,它表示本条语句的符号地址。一般来说,名字可以是标号和变量,统称为标识符。注意:标号和变量都具备3种属性——段属性、偏移属性及类型属性。操作符可以是机器指令、伪指令和宏指令的助记符。操作数字段是操作符的操作对象。操作符在完成相应的操作时要求有一系列的操作数。当有两个或两个以上的操作数时,各操作数之间用逗号隔开。注释字段是以“;”开头的说明部分,可以用英文或者中文书写。注释字段是语句的非执行部分。4.38086汇编语言中的标识符、表达式和运算符4.3.1标识符汇编语言每条语句的第一个字段是它的名字字段,名字可以是标号或变量,这两者又称为标识符。重点是要掌握其组成规则和它的3个属性。4.3.2表达式和运算符在表达式中,运算符充当着重要的角色。8086宏汇编有算术运算符、逻辑运算符、关系运算符、分析运算符和综合运算符共5种。下面分别讨论5种运算符的作用:(1)算术运算符用于完成算术运算,有+(加法)、-(减法)、×(乘法)、/(除法)、MOD(求余)、SHL(左移)、SHR(右移)共7种运算。(2)逻辑运算符的作用是对其操作数进行按位操作。逻辑运算符有AND(与)、OR(或)、XOR(异或)和NOT(非)。(3)关系运算符的运算对象是两个性质相同的项目。其结果为:关系成立或不成立。有EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)共6种。(4)分析运算符是对存储器地址进行运算的。有5个:SEG(求段基值)、OFFSET(求偏移量)、TYPE(求变量类型)、LENGTH(求变量长度)和SIZE(求字节数)。(5)综合运算符可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性,所以又称为属性修改运算符。有6个综合运算符:PTR、段属性前缀、SHORT、THIS、HIGH和LOW。各类运算符和常数、寄存器名、标号、变量一起共同组成表达式。在计算具有多个运算符的表达式值时,按以下规则操作:优先级高的先运算,优先级低的后运算。当优先级相同时,按表达式中从左到右的顺序进行运算。使用括号可以提高表达式运算的优先级4.4伪指令语句在汇编语言中,伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。例如定义数据、分配存储区、定义段及定义过程等都采用伪指令表示。4.4.1数据定义伪指令数据定义伪指令用来定义一个变量的类型,并将所需要的数据放入指定的存储单元中,也可以只给变量分配存储单元,而不赋予特定的值。1.数据定义伪指令的一般格式为:[变量名]伪指令操作数[,操作数…][;注释]2.常用的数据定义伪指令定义字节变量伪指令DB定义字变量伪指令DW定义双字变量伪指令DD定义四字变量伪指令DQ定义十字节变量伪指令DT操作数?:保留存储空间,但不存入数据复制操作符DUP:repeat_countDUP(operand,…)可嵌套4.4.2符号定义伪指令符号定义伪指令的用途是给一个符号重新命名,或定义新的类型属性等。这些符号可以包括汇编语言的变量名、标号名、过程名、寄存器名以及指令助记符等。常用的符号定义伪指令有EQU、=、LABLE。属性操作符PTRtypePTRvariable±constantexpressionLABELvariable_nameLABELtype(BYTE,WORD,DWORD)label_nameLABELtype(NEAR,FAR)4.4.3段定义伪指令段定义伪指令的用途是在汇编语言程序中定义逻辑段,用它来指定段的名称和范围,并指明段的定位类型、组合类型及类别。常用的段定义伪指令有SEGMENT、ENDS和ASSUME等。Segment_nameSEGMENT[align_type][combine_type][‘class’]定位类型(Align_type):PARA、BYTE、WORD、PAGE组合类型(combine_type):PUBLIC、COMMON、ATexpression、STACK、MEMORY类别(’class’)4.4.4过程定义伪指令在程序设计中,经常将一些重复出现的语句组定义为子程序。子程序又称为过程,可以采用CALL指令来调用。使用格式:过程名PROC[NEAR]/FAR…(语句系列)RET…(语句系列)过程名ENDP调用一个过程的格式为:CALL过程名4.4.5结构定义伪指令结构就是相互关联的一组数据的某种组合形式。用伪指令STRUC和ENDS把相关数据定义语句组合起来,便构成一个完整的结构。使用格式:结构名STRUC…(数据定义语句序列)结构名ENDS4.4.6模块定义与连接伪指令在编写规模较大的汇编语言源程序时,可以将整个程序划分为几个独立的源程序,称之为模块。将各模块分别进行汇编,生成各自的目标程序,最后将它们连接成为一个完整的可执行程序。各模块之间可以相互进行符号访问。为了进行模块之间连接和实现相互的符号访问,以便进行变量传送,通常使用以下几个伪指令:NAME、TITLE、END、PUBLIC、EXTRN。4.4.7程序计数器$和ORG伪指令1.程序计数器$字符“$”在8086宏汇编中具有一种特殊的意义,把它称为程序计数器。表示位置计数器的当前值,它可以在数值表达式中使用。在程序中,“$”出现在表达式里,它的值为程序下一个所能分配的存储单元的偏移地址。2.ORG伪指令ORG是起始位置设定伪指令,用来指出源程序或数据块的起点。利用ORG伪指令可以改变位置计数器的值。4.5汇编语言程序上机过程4.5.1汇编语言的工作环境及上机步骤1.硬件环境目前8086汇编语言程序一般多在IBMPC/XT及其兼容机上运行,要求机器具备基本配置即可以了。2.软件环境主要是指支持汇编语言程序运行和帮助建立汇编语言源程序的一些软件,主要包括:(1)DOS操作系统(2)编辑程序EDIT.COM(3)宏汇编程序MASM.EXE(4)连接程序LINK.EXE(5)调试程序DEBUG.COM3.运行汇编语言程序的步骤(1)用编辑程序EDIT.COM建立扩展名为.ASM的汇编语言源程序文件;(2)用汇编程序MASM.EXE将汇编语言源程序文件汇编成用机器码表示的目标程序文件,其扩展名为.OBJ;(3)若在汇编过程中出现语法错误,根据错误信息提示(如位置、类型、说明),用编辑软件重新调入源程序进行修改。无错误时采用连接程序LINK.EXE把目标文件转化成可执行文件,其扩展名为.EXE;(4)生成可执行文件后,在DOS命令状态下直接键入文件名就可执行该文件。4.6汇编语言程序运行实例本节中给出的程序是从键盘输入10个字符,然后以与键入相反的顺序将10个字符输出到显示屏幕上。设定源程序名为STR.ASM。4.6.1用EDIT建立汇编语言源程序在DOS状态下,调用EDIT编辑程序建立文件名为STR.ASM的汇编源程序。其屏幕显示如下图:4.6.2用MASM汇编生成目标文件源程序文件建立完毕后,调用宏汇编程序MASM对STR.ASM进行汇编,结果如下图所示:4.6.3用LINK进行连接生成可执行文件汇编完毕程序正确,则可调用LINK进行连接,生成可执行文件STR.EXE,过程如下图所示。4.6.4程序的运行在DOS状态下,直接键入可执行的程序文件名STR,然后从键盘输入10个字符,并将其倒序排列输出,过程如下图所示:本章小结本章从汇编语言的基本表达式入手,介绍了汇编语言的工作环境和源程序的建立、汇编、连接、运行、调试等过程。通过学习,应该熟悉汇编语言源程序的基本格式,正确运用语句格式来书写程序段,掌握伪指令的功能和应用,并通过上机操作,熟悉编辑程序、汇编程序、连接程序和调试程序等软件工具的使用,掌握源程序的建立、汇编、连接、运行、调试等技能,为下一章的程序设计打下良好基础。
本文标题:4 汇编语言的基本表达及其运行
链接地址:https://www.777doc.com/doc-3179697 .html