第5章_8086_汇编语言程序设计.ppt_第1页
第5章_8086_汇编语言程序设计.ppt_第2页
第5章_8086_汇编语言程序设计.ppt_第3页
第5章_8086_汇编语言程序设计.ppt_第4页
第5章_8086_汇编语言程序设计.ppt_第5页
已阅读5页,还剩180页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.8086汇编语言的基本语法8086汇编语言编程的基本方法,第5章汇编语言编程,2。汇编语言具有执行速度快、硬件易于控制的独特优势,仍然是用户使用的编程语言。特别是在程序的空间和时间要求很高,设备需要直接控制的地方,汇编语言就更有必要了。由于汇编语言本身的特点,本章将选择目前在中国广泛使用的IBM PC作为基本模型,重点介绍8086汇编语言的基本语法规则和基本编程方法,从而掌握通用汇编语言编程的初步技术。汇编语言程序设计(1),3。编程语言是专门为计算机编程而配置的语言。它们根据不同的形式和功能可以分为三种类型,即机器语言机器代码表示,例如B8H和C3H汇编语言使用指令助记符来表示机器代码(

2、很难学)。例如:机器代码B8H和C3H的助记符是MOV AX,BX注:不同的处理器,不同的机器代码,不同高级语言规格的助记符,可以用于不同的处理器(通用,机器语言,特性:它可以直接被机器识别和执行;该程序占用的内存空间较少。缺点:难以识别、记忆、书写和出错。汇编语言是一种用指令、符号地址、标签等助记符编写程序的语言。特点:易于阅读、书写和记忆。缺点:它不能像机器语言那样被计算机直接识别,也不像高级语言那样通用和可移植。汇编语言(1),6,汇编语言,硬件特性,中央处理器工作模式,中央处理器寄存器系统,指令系统,内存管理机制,中断和外部设备,依赖,充分发挥,汇编语言,汇编语言(2),7,高级语言是

3、从特定的机器中分离出来的(也就是说,独立于源程序用相同的高级语言编写的程序一般可以在不同的计算机上运行并得到相同的结果。由于高级语言的普遍性,高级语言程序员不需要熟悉计算机和机器指令的内部结构,而只关注程序结构和算法描述。因此,高级语言有更广泛的领域。高级语言,高级语言,8,目录,机器语言汇编语言高级语言,机器代码,汇编程序,编译器,直译,解释器,计算机语言到机器代码,9。椭圆表示系统软件及其操作,顶部是系统软件的名称,底部是软件的操作。该框代表磁盘文件。首先,用户编写汇编语言的源文件,然后用汇编语言进行汇编,从而生成具有OBJ属性的目标程序,并将其保存为二进制代码。然后,通过链接将目标文件与

4、库文件和其他目标文件连接起来,形成一个属性为EXE的可执行文件,可以在DOS环境下的机器上执行。计算机上的汇编语言和处理过程,10,汇编源程序:按照严格的语法规则用汇编语言编写的程序。编辑程序:创建和修改汇编语言源程序,形成具有ASM属性的源文件。常用软件:全屏文本编辑(全屏text EDIT),记事本汇编器(NOTEPAD assembler):汇编源文件,生成用二进制代码表示的OBJect属性的ObJect程序,并保存。常用软件:小型汇编ASM和大型汇编MASM。连接程序:OBJ文件通过一个链接将目标文件与库文件和其他目标文件连接起来,形成一个具有exe属性的可执行文件。用汇编语言编写的系

5、统软件。汇编(process):将汇编源程序翻译成机器代码目标程序的过程。它分为手动装配和机器装配。常驻汇编:汇编程序在小型计算机上配置,目标程序在本地翻译和执行,也称为本地自汇编。交叉组装:多用户终端使用一个主机的组装程序来组装其他计算机,然后在每个终端上执行,以共享主机的软硬件资源。汇编语言,用指令助记符表示指令机器码,用符号地址表示内存地址,用汇编MASM.EXE汇编。ASM源程序,将指令助记符翻译成指令机器码、汇编语言和汇编程序,13、微软在20世纪80年代引进了MASM 1.0,随着微处理器的升级,MASM也做了相应的修改。MASM 4.0:支持80286/80287 MASM 5.

6、0:支持80386/80387,增加了简化的段定义伪指令和存储模式伪指令,使得组装和连接速度更快。MASM 6.0支持80486,并提供了许多类似于高级语言的新特性。1991年推出。MASM 6.11,MASM 6.14:支持奔腾以上的高端微处理器,并引入流量控制的伪指令。宏汇编程序MASM,14,源程序编辑,目标程序汇编和执行程序连接,使用源程序编辑软件EDIT.COM或NOTEPAD生成源程序文件如:*ASM,使用目标程序汇编软件MASM.EXE生成目标程序文件如:*OBJ,使用可执行程序连接软件LINK.EXE生成可执行程序文件如:*EXE,汇编语言应用程序开发过程,15。在详细讨论80

7、86汇编语言的繁琐语法规则之前,先给出一个具有完整段定义格式的汇编源程序(MASM程序)的例子,以便对汇编语言的相关规则和格式有一个初步的了解。例如:找出从1开始的50个连续奇数的总和,并将结果存储在名为SUM的字存储单元中。汇编源程序实例(1)、16、汇编源程序实例(2)、17、汇编源程序实例(3)、18、段,汇编源程序一般由几个段组成,每个段都有一个名称。以SEGMENT作为开始,以ENDS作为结束,两者(伪指令)应该以相同的名称开头。段在本质上可以分为代码段、堆栈段、数据段和附加段。代码段和数据段是必不可少的,堆栈段和附加段可以根据需要设置。在上述示例中,定义了两个段:一个数据段和一个代

8、码段,并且编译了源程序示例(4)和19。建议每行只有一条语句,不能超过128个字符(在MASM 6.0中可以是512个字符),但一条语句允许有后续行,最后以回车结束。整个源程序必须以END语句结束,并通知汇编程序停止汇编。结束后的开始标记表示程序执行时的开始地址。每个assembly语句最多由四个字段组成,这些字段根据特定规则写入语句的四个区域,这些区域由空格或制表符分隔。在8086汇编语言中,有三种基本语句:指令语句,伪指令语句,宏指令语句,汇编语言语句类型,21。指令语句是一种执行语句,汇编程序在汇编时将为其生成一对一的机器目标代码。汇编指令,机器代码,MOV DS,AX ADD AX,B

9、X,8E D803 C3,指令语句,22,伪指令语句:这是一个解释性语句,它只向汇编程序提供汇编所需的相关信息。例如定义符号、分配存储单元、初始化存储器等。而不生成目标代码本身。数据段aadw20h,-30h数据结束,伪指令语句,23,宏指令:它是由宏名称定义的指令序列。组装时,所有宏指令都将插入相应指令序列的目标代码。宏指令语句是通用指令语句的扩展。24,8086的汇编语句通常由四个字段组成,根据不同类型的语句格式进行描述。汇编语言语句格式,25,编号:前缀指令助记符操作表;注释表示可选零件;操作数表是由逗号分隔的多个操作数。,指令语句格式(I),26,1)标签表示“:”之后的指令所在的存储

10、地址(逻辑地址),它被JMP、调用和循环用作操作数来查找分支目标地址。指令语句格式(2),27,2)前缀,8086中有一些特殊指令,它们经常与其他指令一起用作前缀。例如,与“字符串运算指令”(MOVS、CMPS、SCAS、LODS和STOS)一起使用的五个“重复指令”(REP、REPE/REPZ、REPANE/REPZ),指令语句格式的指令助记符(III),28,3)包括8086的指令助记符和宏定义语句定义的宏,指令语句格式(4),29,4)运算表对于8086的一般执行指令,运算表可以是一个或两个操作数。如果有两个操作数,左边的操作数称为目标操作数,右边的操作数称为源操作数。指令语句格式(5)

11、、30、5)都用“;”注释首先,它用于简要说明程序中指令的功能(而不是重复说明指令本身的功能),从而提高程序的可读性。指令语句格式(6),31,命名伪指令表;注释、伪指令语句格式(一)、32、常量名、变量名、过程名、由标识符定义的段名等。标识符以字母开头,由字母、数字、特殊字符(如?下划线等。)。默认情况下,汇编器不区分大写字母和小写字母。注意:名字后面没有冒号,这是伪指令语句和指令语句在格式上的主要区别。1)名称,伪指令语句格式(2),33,2)MASM常用的伪指令助记符,伪指令语句格式(3),34。伪指令语句的参数表包含几个用逗号分隔的参数,可以是常量、变量名、表达式等。3)参数表,伪指令

12、语句格式(4),35,一条指令必须包括一个指令助记符和足够的寻址信息,以便汇编程序可以将其转换成机器指令的操作码字段和由操作数寻址模式指定的操作数字段。指令语句,36,标签是一组机器指令的名称,用作汇编语言源程序中转移、调用和循环等指令的操作数程序转移的转向地址(目标地址)。标签表示指令地址,它是指令符号地址,有三个属性:段地址、段内偏移量(或相对地址)和类型。标签(1),(1)标签及其属性,37,标签所在段的段地址(16位数字),是标签所在段的20位起始地址的前16位。段偏移标签和段起始地址之间的距离是字节数,16位是无符号的。由类型标签表示的指令的传输范围可分为近和远。段基,标签(2),3

13、8,近类型的标签只用于同一段,传输的偏移属性由2字节指针给出(即只改变IP值,不改变CS值);对FAR类型的标签没有这样的限制,必须使用字节指针来指示段地址和段内的偏移量。当标签用作JMP或呼叫的目标操作数时,如果是段内转移或呼叫,则使用近类型;在段间转接或呼叫的情况下,应采用远传类型。标签(3),39,标签是由标识符定义的,也就是说,它以字母开头,由字母、数字、特殊字符(如?下划线等。)。标签的最大长度一般不超过31个字符,宏指令名称除外。标签不能与保留字相同。保留字看起来像标识符,但在语言中它们有机器赋予的特殊含义。标签最好用有一定含义的英语单词或缩写来表示,这样便于阅读。(2)标签的定义

14、和组成,标签(4),40,8086中央处理器寄存器名称;8086中央处理器指令系统的所有指令助记符;汇编语言的伪指令;其他名称,8086保留字,标签(5),41,在指令助记符之前,使用后面跟冒号“:”的标签,表示该标签被定义为NEAR类型的标签。当然,标签也可以是单行的。例如, SUBROUT: MOV AX,3000H,参考号(6),42,当“过程”由过程定义伪指令过程定义时,给过程的名称也是参考号,用作调用指令的操作数。PROC定义的格式是:过程名procnear可以省略“近”或使用程序名称“远”,标签(7)、43和(3)。通常,“标签”仅用于循环、分支和调用指令。在循环或条件分支指令中,

15、标签类型必须是NEAR,使用标签的指令和定义标签的指令之间的距离必须在-128到127字节之间。标签(8),44,在无条件转移或呼叫指令中:在段之间使用FAR类型;近类型更好,或远类型可以在段内使用。段内的short转换:当采用NEAR类型时,如果定义标签和参考标签的两个指令之间的距离在-128-127字节之间,则在标签之前添加操作符SHORT。段内长传输:距离在-32768到32767字节之间。(9)、(45)、(10)和(46)。执行指令中的指令助记符主要是8086中央处理器指令系统中的指令助记符。汇编语言操作数的表示和规则是复杂的:要充分体现汇编语言中使用符号操作数和指令助记符的优势,以

16、便程序员尽可能减少内存分配和地址计算的工作量;而且可以被汇编器有效地翻译成对应于特定处理器的各种寻址模式。直接在指令中给出的立即操作数寄存器操作数存储器操作数、操作数(1)、48不需要使用寄存器,也不涉及访问数据区的操作,只能用作源操作数。立即操作数是一个整数,可以是1字节或2字节。在汇编语言中,直接操作数由常数(包括数字常数和符号常数)以及由常数和相关运算符组成的数字表达式来表示。例如,MOV BX,1000 5*3,(1)立即操作数,操作数(2),49,通用寄存器AX,BX,CX,DX,BP,SP,di,SI和段寄存器CS,SS,DS,ES都可以用作操作数。例如,MOVBX、AX、(2)寄存器操作数、操作数(3)和50。指定存储单元中的内容作为指令的处理对象,汇编指令中的存储操作数实际上是存储单元的逻辑地址。(3)内存操作数,操作数(4),51,例如:MOV WORD PTR0A00H,000H MOV AX,Bx dec字节ptr BP 12h dec WORD pt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论