汇编语言与计算机原理第四章.doc
《汇编语言与计算机原理第四章.doc》由会员分享,可在线阅读,更多相关《汇编语言与计算机原理第四章.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 Intel8086/8088微处理器及其指令系统4.1 概述微型计算机所使用的微处理器芯片可分为两大类:一类是Intel类型芯片,另一类是非Intel类型的。Intel类型微处理器芯片主要生产厂家是美国Intel公司, IBM PC微型计算机CPU使用的就是Intel类型微处理器。非Intel类型的微处理器芯片是Motorola等公司的产品,主要用于Apple公司的微型计算机和服务器中。自1971年,Intel公司生产第一片微处理器至今的30多年时间,Intel微处理器每3至5年就要更新换代一次,使IBM PC微型计算机的性能不断提高。IBM PC微型计算机使用的微处理器主要变化是:1
2、 Intel 8088微处理器Intel 8088微处理器是Intel公司专门为第一代IBM PC微型计算机设计的。Intel 8088微处理器内部运算和寄存器都是16位,但是外部数据线是8位,因而被称为准16位微处理器。地址线20位,可寻址空间1M;工作频率4.7Mhz。与此同时还推出了Intel 8087浮点运算器,以配合Intel 8088,提高数值运算速度。2 Intel 80286微处理器Intel 80286是IBM PC/AT微型计算机使用的微处理,其内部运算和寄存器同Intel 8088一样,也是16位,但是外部数据线增加到16位,是真正的16位微处理器。地址线24位,可寻址空
3、间16M;工作频率8Mhz。和Intel 80286配合的浮点运算器是Intel80287。3Intel 80386微处理器使用Intel 80386微处理器的有IBM公司的PS/2系列微型计算机,和一些其它厂家生产的386型兼容机。Intel 80386是32位微处理器,其内部运算和寄存器都是32位;外部数据线和地址线32位,可寻址空间4G;增加了页式虚拟存储管理部件;时钟频率32 Mhz。和Intel 80386配合的浮点运算器是Intel 80387。4Intel 80486微处理器Intel 80486是高性能的32位微处理器,其内部运算和寄存器的字长和Intel 80386相同。In
4、tel 80486有多个型号,最高时钟频率可达66 Mhz。Intel 80486内含浮点运算器和8KB的高速缓存器。5Pentium微处理器1993年Intel公司推出了Pentium微处理器。Pentium微处理器芯片集成了310万个晶体管,有64位数据线,36位地址线。Pentium微处理器的内部浮点运算器在Intel 80486的基础上进行了全新的设计。Pentium微处理器使用了超标量技术,有两个独立的整数处理单元,可以同时执行两条整数运算指令。内部高速缓存分为两部分:8KB的指令高速缓存和8KB的数据高速缓存。之后Pentium微处理器推出的几个型号,时钟频率从66Mhz发展到16
5、6Mhz。1995年,Intel公司推出了Pentium Pro微处理器。Pentium Pro的整数处理单元增加到3个,时钟频率有150 Mhz、166 Mhz和200 Mhz等几个型号。1997年1月Intel公司推出了Pentium MMX(Multimedia Execution)微处理器,该处理器增加了57条多媒体指令,用于处理音频、视频和图像数据。1997年5月,Intel公司推出了PentiumII微处理器,最高时钟频率PentiumII芯片达366Mhz。1999年,Intel公司推出了Pentium 微处理器。最高时钟频率PentiumII芯片达933Mhz。2000年6月,
6、Intel公司推出了Pentium 微处理器,目前,Pentium 微处理器的时钟频率已高达2.0G Mhz以上。4.2 8086/8088微处理器一、8086/8088微处理器功能结构8088微处理器是Intel公司专为IBM-PC微型计算机设计的CPU芯片,它仅仅是在8086CPU的基础进行了一些改进。Intel8086和Intel 8088的主要区别是Intel 8086的数据线是16根,而Inetl8088只有8根数据线,但是它们的地址线都是20根,控制线也基本相同。通用寄存器组段寄存器组总线控制标志寄存器执行单元总线接口单元指令队列执行控制部件运算器运算器AHALBHBLCHCLDH
7、DLSPBPSIDIESCSSSDS指令指针地址运算器运算器4321图4.2.1 8086/8088功能结构图Intel8086/8088CPU就功能而言分成两大部分:总线接口单元BIU(Bus Interface unit)和执行单元EU(Execution Unit),如图4.2.1所示。BIU单元的功能主要包括:从存储器取出指令,送入指令流排队机构;访问内存或外部设备;响应外部中断等。EU的功能是执行指令。EU从指令队列取出指令代码,译码后发出相应的执行控制信号。运算器执行运算,运算结果的特征保存在标志寄存器。由于取指令和执行指令部件是分开的,并且相对独立,所以指令执行和取指令可以同时进
8、行,即在一条指令执行过程中,可以取出下一条指令。指令队列可以存储多条指令,BIU取出的指令在指令流排队机构排队,执行单元执行完一条指令后就可以立即从指令队列中取出下一条指令执行。由于执行和取指令可以重叠进行,提高了系统速度。二Intel8086/8088CPU的寄存器 Intel8086/8088CPU内部含有一些寄存器,这些寄存器用于暂存数据和地址等。1数据寄存器组数据寄存器有四个,这四个寄存器都是十六位寄存器,可以按十六位使用,也可以分别使用每个寄存器的高八位和低八位。如果按十六位使用其名称分别为AX,BX,CX和DX,如果按八位使用其名字如图4.2.2所示。四个数据寄存器的通常的名称和用
9、途如下:AX:累加器,用于暂存操作数或运算结果。BX:基址寄存器,除用于存储运算操作数之外,还经常用于地址运算。CX:计数器,初作为一般寄存器使用外,还经常用于循环程序的循环次数计数。DX:数据寄存器,用于存储运算操作数或运算结果。AHALBHBLCHCLDHDL图4.2.2 数据寄存器2. 变址寄存器SI:源变址寄存器,16位,一般用于存储源操作数的偏移地址。DI:目的变址寄存器,16位,一般用于存储目的操作数的偏移地址。3. 堆栈指针和基数指针SP:堆栈指针,16位,用于堆栈操作。BP:基数指针,16位,用于堆栈段指示偏移地址。4段寄存器段寄存器CS、DS、SS、ES是四个十六位寄存器,在
10、段式存储管理中,这四个寄存器用于保存段基址(段开始地址)。由于Intel8086/8088微处理器的地址线有20条,而段寄存器是十六位寄存器,所以只能保存段基址的高十六位,在执行访问内存指令时,将段寄存器左移4位,再加上16位偏移地址得到20位物理地址。四个段寄存器用途如下:CS:代码段寄存器,用于存储程序代码段基址。DS:数据段寄存器,用于存储程序数据段基址。SS:堆栈段寄存器,用于存储程序堆栈段基址。ES:附加数据段寄存器,用于存储程序数据段基址,通常用于字串操作5. IP:指令指针,16位,指向下一条要执行指令的偏移地址。6. 标志寄存器16位寄存器,每一位指示运算指令或其他指令执行后的
11、检验结果,其意义如下:CF:b0位,进位或借位标志位,当加法运算最高位向前有进位,或减法运算最高位向前有借位,本位置1,否则置0;PF:b2位,奇偶标志位,当运算结果低8位有偶数个1,PF置1,否则置0;AF:b4位,辅助进位标志位,当运算时,b3位向b4位有进位AF置1,否则置0;ZF:b6位,零标志位,运算结果等于0时置1,否则置0;SF:b7位,符号标志位,运算结果的最高位等于1时SF=1(负号),等于0时 SF=0(正号);TF:b8位,追踪标志位,当TF=1时使CPU进入单步执行方式,每执行一条指令就暂停,常用于调试程序;IF:b9位,中断标志位,当IF=0时,CPU不响应可屏蔽中断
12、;DF:b10位,方向标志位,当字符串传送时,DF=0时每传送一个字节或一个字,地址自动增加1(字节传送)或增2(字传送),当DF=1时每传送一个字节或一个字,地址自动减1(字节传送)或减2(字传送);OF:b11位,溢出标志位,当带符号数运算的运算结果超出了数的表示范OF置1,否则置0。例如,8位运算时,当运算结果+127或128时,超出了8位机器数的表示范围,既产生了溢出。进位和溢出是两个不同的概念,不要混淆,如下例,计算+,计算结果为,并没有向前进位,但是8位带符号机器数的表示范围,OF将置1:+ 除上述标志位外,状态标志寄存器还有一些位没有使用,如图4.2.3所示。b15 b0OFDF
13、IFTFSFZFAFPFCF图4.2.3 标志寄存器4.3 操作数寻址方式一、指令格式Intel8086/8088微处理器的指令按格式可分为无操作数指令、单操作数指令和双操作数指令三种。指令的一般格式为: 操作码 目的操作数 ,源操作数操作码表示指令的操作类型,源操作数和目的操作数表示指令的操作对象,操作结果存入目的操作数。例如指令:ADD AL,3 ,表示将AL寄存器中的值和常数3相加,结果存入AL寄存器。微处理器实际执行的指令是二进制代码的机器指令,为了编程方便,在编写程序时一般使用机器指令的助记符号,机器指令的助记符号称为汇编指令,例如,上面指令中的ADD就是加法机器指令的助记符。不同指
14、令的操作数个数可能不同,有的指令有两个操作数,有的指令有一个操作数,还有的指令没有操作数,或者其操作数是隐含的,如下面的例子:INC AL ;将AL寄存器值加1,结果存入AL寄存器CLD ;将标志寄存器的DF位置0ADD AL, BL上面第一个指令是单操作数指令;第二个指令的操作数是隐含的(DF标志位),第三个指令是双操作数指令。二、操作数类型:按操作数所在位置,可分为三种类型:1寄存器操作数:操作数在CPU内部寄存器中,例如将AL和BL得值相加,结果存入AL,可用如下指令: ADD AL, BL这里源操作数和目的操作数都是寄存器操作数。2存储器操作数:操作数据在内存单元中,如下例:ADD 2
15、000H, AL该指令的执行将AL的值和偏移地址为2000H的内存单元值相加,结果存入内存单元,该指令的源操作数属于寄存器操作数,而目的操作数是存储器操作数。3立即数:操作数在指令中,例如下面指令的源操作数为立即数:ADD AL,30在指令中目的操作数除了参加运算之外,还要存储运算结果,所以目的操作数不能是立即数,只能是存储器操作数或寄存器操作数。三、寻址方式所谓寻址方式,是CPU在执行指令时,如何确定源操作数或目的操作数所在位置。Intel8088寻址方式有如下几种:1立即寻址操作数为立即数,例如:MOV AL, 3MOV AL,A第一条指令的功能是将数值常数3传送到AL寄存器。第二条指令的
16、功能是将字符A的ASCII码41H传送到AL寄存器。立即数寻址中的操作数(立即数)作为指令的一部分,跟随在操作码之后。如果是16位操作数,低8位在前(低地址),高8位在后(高地址)。例如:MOV AX,4142H指令在内存中的存放如图4.3.1所示,指令执行后,AL=42H,AH=41H。操作码42H41HALAH图4.3.1 16位立即数寻址2寄存器寻址操作数为CPU内部寄存器,上面示例指令的目的操作数即为寄存器寻址,下面指令的源操作数和目的操作数都是寄存器寻址方式:MOV DS,AX ;将AX的值传送给DS寄存器。3直接寻址直接寻址方式指令中,给出的是操作数所在内存单元的段内16位偏移地址
17、,如下面指令:MOV AX,2000H ;将段内相对偏移地址为2000H单元的值传送到AX。这里方括号是地址符号,2000H为十六进制数。执行指令时CPU要根据偏移地址计算实际物理地址,其计算方法是:DS*10H+2000H这里约定段基址的高16位存放在DS段基址寄存器,低4位为0。CPU的地址运算器根据段基址和指令中的偏移地址计算出20位的物理地址,发送到地址总线,将该地址开始存放的一个字(两个字节)的数据传送到寄存器AX,如图4.3.2所示。6000HDS62000H数据段42H41HALAH图4.3.2 直接寻址如果不使用DS作为段基址,在指令中要给出段前缀,指明计算物理地址时使用那一个
18、段寄存器,例如:MOV AX,ES:2000H或:ES:MOV AX,2000H在执行指令时计算物理地址使用ES段寄存器。在汇编语言程序中操作数的偏移地址一般使用符号表示,例如:MOV AX,BUFF指令中的BUFF是偏移地址符号,一般称为变量,其代表的值在程序中应当有相应的定义。4 寄存器间接寻址寄存器间接寻址方式的指令,操作数的段内偏移地址由寄存器的值指出。例如:MOV BX,2000HMOV AX,BX第一条指令将偏移地址存入BX寄存器,第二条指令由BX指定源操作数偏移地址。这里方括号的含义是将BX寄存器的值作为偏移地址,指令是将该地址存储的一个字(两个字节)的数据传送到AX寄存器。寄存
19、器间接寻址操作数的段内偏移地址可以由SI,DI,BX,BP四个寄存器指定。在指令中没有段前缀时,如果使用SI,DI,BX寄存器,指令执行时使用DS寄存器的值作为段基址计算物理地址;如果使用BP寄存器指定,计算物理地址约定使用SS段寄存器。5变址寻址所谓变址寻址就是由规定的变址寄存器的值再加上一个指令中给出的位移量作为操作数的段内偏移地址。Intel 8088CPU有两个变址寄存器SI和DI,位移量可以是8位或16位二进制数。如指令:ADD AX, BUFFSI计算物理地址的方法是:DS*10H+SI +BUFF。指令中BUFF是代表位移量符号。6基址寻址基址寻址与变址寻址类似,只不过使用的寄存
20、器是基址寄存器BX,或基址指针寄存器BP。指令中如果没有段前缀,如果使用BX寄存器,计算物理地址使用DS寄存器;如果使用BP寄存器,计算物理地址使用SS段寄存器。如指令:ADD AX, BUFFBX计算物理地址的方法是:DS*10H+BX +BUFF。7基址-变址寻址指令中将BX或BP作为基址寄存器,将SI或DI作为变址寄存器,偏移地址由基址寄存器值加上变址寄存器值再加上一个位移量得到,如下面指令:MOV AX, MASKBXSI其物理地址为:DS*10H+BX+SI+MASK。这里MASK是一个代表位移量的符号。如果指令使用BX作基址寄存器,使用DS寄存器计算物理地址;使用BP作基址寄存器,
21、计算物理地址使用SS段寄存器。当指令有段前缀时,使用是指定的段寄存器计算计算物理地址。4.4 Intel8086/8088指令系统指令系统是指CPU所能识别和执行的指令集合。Intel8086/8088指令按功能可分为六组:1数据传送指令2算术逻辑指令3逻辑运算指令4串操作指令5程序控制指令6处理器控制指令我们将分类说明Intel8086/8088指令,并且从每一类选出一到两个常用指令做较详细讨论,其余一些指令在以后章节的程序设计举例中将会使用,届时将会进行详细讨论;有一些指令在本教材中没有做详细讨论,如果需要可以查阅有关参考资料。一、 数据传输指令数据传输指令包括通用传送指令、输入输出指令、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 计算机 原理 第四
限制150内