《16位和32位微处理器指系统与汇编语言编程.doc》由会员分享,可在线阅读,更多相关《16位和32位微处理器指系统与汇编语言编程.doc(15页珍藏版)》请在金锄头文库上搜索。
1、第4章 16位和32位微处理器指令系统与汇编语言编程本章学习要点 8086CPu指令系统的寻址方式 8086CPU指令及其应用 汇编语言基本格式 汇编语言程序设计的步骤、方法及应用 DOS和BIOS中断调用41 本章知识重点4-1-1 指令系统与寻址方式 1指令系统与指令格式的概念 计算机所能执行的全部操作命令的集合称为该计算机的指令系统。指令系统是计算机硬件和软件之间的桥梁,是汇编语言程序设计的基础。 计算机中的指令格式由操作码字段和操作数字段两部分组成。 (1)操作码字段:说明计算机要执行的具体操作,如传送、运算、移位、跳转等操作,是指令中必不可少的组成部分。 (2)操作数字段:说明在指令
2、执行的过程中需要的操作数,它可以是操作数本身,也可以是操作数地址或是地址的一部分,还可以是指向操作数的地址指针或其他有关操作数据的信息。 28086指令系统的寻址方式 计算机中的指令要给出操作数的存放位置,在执行时需要根据这个地址信息找到需要的操作数,这个过程称为寻址,计算机中寻找操作数的方法称为寻址方式。 8086指令系统的寻址方式按其处理数据的类别区分,主要有以下两大类方式: (1)与数据有关的寻址方式,可以分为以下3种: 立即数寻址:操作数在给定的指令中。 寄存器寻址:操作数在CPU的寄存器中。 存储器寻址方式:操作数在指定的存储器中。 其中,存储器寻址又包括以下5种基本寻址方式: 直接
3、寻址:指令中直接给出操作数存放的存储单元有效地址。 寄存器间接寻址:操作数存放的存储单元有效地址在指定的寄存器中。 寄存器相对寻址:操作数存放的存储单元有效地址是寄存器的内容与位移量之和。 基址变址寻址:操作数存放的存储单元有效地址是基址寄存器的内容与变址寄存器的内容之和。 相对基址变址寻址:操作数存放的存储单元有效地址是基址寄存器的内容与变址寄存器的内容再加上相对位移量之和。(2)与IO端口有关的寻址方式,可以分为直接端口寻址和间接端口寻址两种方式。 直接端口寻址:是在指令中直接给出要访问的端口地址,一般采用2位十六进制数表示,也可以用符号表示,可访问的端口范围为0255。 间接端口寻址:是
4、访问的端口地址值大于255时所采用的IO端口寻址方式。它是把IO端口的地址先送到DX中,用DX作为间接寻址寄存器。此种方式可访问的端口范围为O65535。38086CPU指令系统按功能可以分为6大类指令(1)数据传送类指令:这类指令的功能是把数据或地址传送到指定的寄存器或存储单元中。根据传送的内容可以分为:通用数据传送指令、累加器专用传送指令、地址传送指令和标志寄存器传送指令等4类。(2)算术运算类指令:8086的算术运算类指令包括加、减、乘、除4种基本运算以及进行BCD码调整的指令。要注意算术运算类指令会影响标志位,应按相应的规则去处理。(3)逻辑运算(位操作)与移位类指令:逻辑运算类指令包
5、括逻辑与、逻辑或、逻辑异或、逻辑非和测试指令,可对8位或16位数进行按位操作的逻辑运算。移位指令中包括逻辑左移、逻辑右移、算术左移、算术右移指令;在循环移位指令中包括循环左移、循环右移、带进位的循环左移和循环右移等指令。移位指令也会影响相应的标志位。(4)串操作类指令:8086指令系统中设置了串操作指令,其操作对象是内存中地址连续的字节串或字串。在完成每次串操作后,能够自动修改地址指针,为下一次操作作准备。串操作指令主要包括串传送、串存储、取串、串比较、串搜索、清除和设置方向标志以及重复操作前缀等指令。(5)控制转移类指令:控制转移类指令用来改变程序执行的方向,即修改指令指针寄存器IP和代码段
6、寄存器CS的值。按程序的转移位置有段内转移和段间转移两种。 根据转移指令的功能,可以分为无条件转移指令、条件转移指令、循环控制指令、子程序调用和返回指令等。(6)处理器控制类指令:这类指令主要用于修改状态标志位,如设置进位标志CF、设置方向标志DF、设置中断允许控制标志指令等;对CPU的控制指令,如使CPU暂停、等待、空操作等。4-1-2 汇编语言与汇编程序1汇编语言、汇编程序、汇编语言语句格式(1)汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令助记符来表示操作码和操作数,用符号地址表示操作数地址。(2)汇编程序则是将汇编语言编制的源程序翻译成机器能够识别和执行的目标程序的一种系统
7、软件。(3)汇编语言的语句一般可由14部分组成,其格式如下: 【标识符】 操作符 【操作数】 【;注释】 其中标识符也称为名字,带方括号的内容可根据需要任选。2标号和变量的3种属性在汇编语言中,标号和变量都具备以下3种属性:(1)段属性:该属性定义了标号和变量的段起始地址,其值必须在一个段寄存器中。标号的段是它所出现的对应代码段,由CS指示。变量的段通常由DS或者ES指示。(2)偏移属性:该属性表示标号和变量相距段起始地址的字节数,该数是一个16位无符号数。(3)类型属性:该属性对于标号而言,用于指出该标号是在本段内引用还是在其他段中引用,标号的类型有NEAR(段内引用)和FAR(段间引用)。
8、对于变量,其类型属性说明变量有几个字节长度,这一属性由定义变量的伪指令确定。3表达式和运算符 汇编语言的表达式由常数、寄存器、标号、变量与一些运算符有机结合而成,一般有数字表达式和地址表达式两种。 在表达式中,运算符充当着重要的角色。8086宏汇编有算术运算符、逻辑运算符、关系运算符、分析运算符和综合运算符共5种,各类运算符的作用如下: (1)算术运算符用于完成加、减、乘、除等算术运算和求余运算。 (2)逻辑运算符的作用是对操作数进行按位操作。 (3)关系运算符是双操作数运算,它的运算对象只能是两个性质相同的项目,其结果有两种情况,即关系成立或关系不成立。 (4)分析运算符是对存储器地址进行操
9、作的,它可以将存储器地址的3个重要属性、即段、偏移量和类型分离出来,返回到所在的位置作操作数使用,因此分析运算符又称为数值返回运算符。(5)综合运算符可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性,所以又称为属性修改运算符。4汇编语言程序结构 由于8086的1MB存储空间是分段管理的,源程序存放在存储器中,无论是取指令码还是存取操作数,都要访问内存。因此,汇编语言源程序的编写必须遵照存储器分段管理的规定,分段进行编写。 一个汇编语言源程序由若干个逻辑段组成,每个逻辑段以SEGMENT语句开始,以ENDS语句结束,整个源程序以END语句结束。 一般情况下,
10、汇编源程序应该由3个逻辑段组成,即数据段、堆栈段和代码段。 (1)数据段:用来在内存中建立一个适当容量的工作区,以存放常数、变量等程序需要对其进行操作的数据。 (2)堆栈段:用来在内存中建立一个适当容量的堆栈区,以便在中断、子程序调用时使用。(3)代码段:包括了许多以符号表示的指令,其内容就是程序要执行的具体操作。 5汇编语言伪指令 通常所说的指令对应着CPU的一种特定的操作,例如传送、加法、减法等;而伪指令是给汇编程序的命令,在汇编过稃中由汇编程序进行处理。例如定义数据、分配存储区、定义段及定义过程等。汇编以后,每条CPU指令产生一一对应的目标代码,而伪指令则不产生与之相应的目标代码。 宏汇
11、编程序MASM提供了约几十种伪指令,根据伪指令的功能,大致可以分为:数据定义、符号定义、段定义、过程定义、宏处理、模块定义与连接、处理器方式、条件、列表、其他伪指令等。4-1-3 汇编语言的工作环境与上机步骤8086汇编语言程序对计算机的硬件环境没有特殊要求,计算机具备一些基本的配置就可以了。建立汇编语言源程序和支持汇编语言程序运行的软件环境主要包括以下几个方面:(I)DOS操作系统:汇编语言程序的建立、汇编、连接、运行都是在DOS操作系统的支持下进行的。(2)编辑程序:用来输入和建立汇编语言源程序的一种通用的系统软件,例如全屏幕编辑程序EDITCOM,通常源程序的修改也是在编辑状态进行的。(
12、3)汇编程序:8086的汇编程序有基本汇编程序ASMEXE和宏汇编程序MASMEXE两种。基本汇编程序不支持宏操作,因此,一般选用宏汇编程序MASM EXE。(4)连接程序:8086汇编语言使用的连接程序是LINKEXE。(5)调试程序:作为一种辅助工具来帮助编程者进行程序的调试,通常采用动态调试程序DEBUG COM。一般情况下,在计算机上运行汇编语言程序的步骤有以下5个方面:(1)用编辑程序EDITCOM建立扩展名为ASM的汇编语言源程序文件。(2)用汇编程序MASMEXE将汇编语言源程序文件汇编成用机器码表示的目标程序文件,其扩展名为OBJ。(3)如果在汇编过程中出现语法错误,根据错误的
13、信息提示(如错误位置、错误类型、错误说明),用编辑软件EDITCOM重新调入源程序进行修改,也可采用动态调试程序DEBUGCOM对源程序进行处理。(4)汇编结果正确时采用连接程序LINKEXE把目标文件转化成可执行文件,其扩展名为EXE。(5)生成可执行文件后,在DOS命令状态卜直接键入文件名就可执行该程序。4-1-4汇编语言程序设计1汇编语言程序设计的基本步骤用汇编语言设计源程序,一般按下述步骤进行(1)分析实际问题,抽象出数学模型:(2)确定问题的算法或解题思想;(3)绘制程序的流程图;(4)对存储空间和工作单元进行初始化;(5)编制源程序;(6)对源程序进行静态检查;(7)对源程序进行动
14、态调试直至正确无误。2汇编语言源程序的基本结构 汇编语言源程序一般可由顺序结构、分支结构和循环结构组合而成,3种结构的有机组合和嵌套就构成了结构化的程序。 (1)顺序结构:是按照语句排列的先后次序执行规定的一系列顺序操作。 (2)分支结构:也叫条件选择结构,可以根据不同的情况做出判断和选择,以便执行不同的程序段。 (3)循环结构:循环实际上是分支结构的一种扩展,循环是否继续是依靠条件判断语句来完成的,循环程序由循环初始化部分、循环体、参数修改部分、循环控制部分等组成。按照条件判断所处的位置,可以把循环分为“当型循环”和“直到型循环”。4-1-5 DOS功能与BIOS中断调用 1DOS功能调用
15、DOS功能调用可完成对文件、设备、内存的管理操作。对用户来说,这些功能模块就是相应独立的中断服务子程序,这些程序的入口地址已由系统置入中断向量表中,在汇编语言程序中可采用中断指令直接调用。 要完成DOS系统的功能调用,按如下基本步骤操作: (1)将入口参数送到指定寄存器中; (2)子程序功能号送入AH寄存器中; (3)使用INT 21H指令转入子程序入VI执行相应操作。 2BIOS中断调用 IBM PC系列微机在只读存储器中提供了BIOS基本输入输出系统,它占用系统板上8K字节的ROM区,又称为ROM BIOS。 BIOS为用户程序和系统程序提供主要外部设备的控制功能,如系统加电自检、引导装入及对键盘、磁盘、磁带、显示器、打印机、异步串行通信口等的控制。计算机系统软件就是利用这些基本的设备驱动程序,完成各种功能操作。每个功能模块的入口地址都在中