第二章 微处理器指令系统讲稿-1-2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章:微处理器指令系统微处理器的内部结构8088/8086的寻址方式8088/8086的基本指令数据传送加减运算逻辑运算、移位控制转移、功能调用主要教学内容:概述-8086微处理器系列概况(1)从8080/8085到8086•8086是16位微处理器,内部及对外有16位数据通路,8080/8085只有8位。•8086寻址空间1MB,8080/8085为64KB。•8086有一个初级流水线结构,内部操作与对外操作具有并行性,8085无。(2)从8086到8088•8088内部结构与8086相同,是16位微处理器,对外数据总线是8位的。•8088与已有的8位外围芯片容易配合使用。•8088价格低,适合当时的微计算机使用。(3)8088获得成功IBM公司选择8088作为处理器设计个人计算机,大获成功,Intel微处理器成为主流产品。12345678910111213141516171819204039383736353433323130292827262524232221GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6SS0(HIGH)MN/MXRDHOLD(RQ)/GT0)HLDA(RQ1/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALEINTATESTREADYRESET80888088的引脚图微处理器性能指标一、字长微处理器的字长是指它在交换、加工和存放信息时,其信息位的最基本的长度,它决定一次传送的二进制的位数。各类微处理器的字长不同,例如有四位的、八位的、十六位的、三十二位的等。字长长、位数多的机器处理的精度和速度都更高,因此,字长是微处理器最重要的指标之一。微处理器性能指标•为了辩别信息在长度方面的差别,计算机中用了一个术语——字节(Byte)。•字节是通用的基本单元,它由8个二进制位(bit)组成。一个16位的数,对八位微处理器,需进行二次传送处理,而对十六位的微处理器则需一次,这就是字长长的机器在处理速度上带来的优越性。字长由微处理器对外数据通路的数据总线的条数决定。同时字长又确定了微处理器的内部结构。16位微处理器,是指数据总线条数和内部结构均为16位,16位内部结构而对外数据总线只有8条的又称为准16位机。微处理器性能指标二、指令数•计算机完成某种操作的命今被称为指令。•一台微计算机可以有几十到几百种指令。•一台计算机完成的操作种类愈多,即指今数愈多,表示该微处理器系统的功能愈强。微处理器性能指标三、基本指令执行时间微处理器的各种指令其执行时间是不一样的。基本指令执行时间愈短,表示微处理器工作速度愈高。微处理器性能指标四、访存空间访存空间是指由该微处理器构成的系统所能访问(Access)的存储单元数。此单元数是由传送地址信息的地址总线的条数决定的。十六位微处理器有20条地址线。访存空间为:2^20=1048576≈1024K,比之八位机大16倍。微处理器性能指标五、是否能构成多处理器系统若微处理器具有协处理器接口,则可用来构成多处理系统.这样,可将主处理器CPU的某些任务,如浮点数据运算,输入/输出分由协处理器去完成,而将整个系统功能上百倍地增加。在十六位微处理器之前的低位数微处理器是不具有本性能的.微处理器性能指标微处理器性能指标六、工艺形式及其它采用不同工艺制造的微处理器,其性能有很大差别,因而对使用环境的要求也不同,选用时应区分。其它还有控制功能(包括中断、等待、保持和复原等)、封装形式、所用电源种类、功耗等,选用时也是应注意的指标。2.1微处理器的内部结构•从应用角度(不是从内部工作原理)展开•典型8位微处理器的基本结构•8088/8086的功能结构•8088/8086的寄存器结构•8088/8086的存储器结构•为学习指令系统打好基础例如:关心用户“可编程”寄存器,不关心无法操纵的“透明”寄存器内部数据总线控制总线数据总线地址总线暂存器累加器ALU标志寄存器指令寄存指令译码时序和控制逻辑通用寄存器组地址寄存器组地址总线控制数据总线控制2.1.1微处理器的基本结构1.算术逻辑单元(运算器)2.寄存器组3.指令处理单元(控制器)微处理器的内部结构主要组成部分•算术逻辑单元ALU(运算器)•寄存器组:包括通用寄存器,地址寄存器,标志寄存器。•指令处理单元(控制器):包括指令寄存器,指令译码逻辑,时序和控制逻辑。2.1.28088/8086的功能结构•8088的内部结构从功能上分成两个单元1.总线接口单元BIU(由指令队列、指令指针IP、段寄存器、地址加法器和总线控制逻辑等组成)•管理8088与系统总线的接口•负责CPU对存储器和外设进行访问2.执行单元EU(由ALU、数据寄存器、地址寄存器、标志寄存器和指令译码逻辑等组成)•负责指令的译码、执行和数据的运算•两个单元相互独立,分别完成各自操作,还可以并行执行,实现指令预取(指令读取和执行的流水线操作)总线四种使用情况图示动画总线的四种使用情况1.取指操作;硬盘-内存-CPU(指令队列)2.取指以外的总线操作:CPU内存;CPU外设;3.总线空闲4.总线请求设备占用总线返回2.1.38088/8086的寄存器结构•8086/8088中有14个16位寄存器•8个通用寄存器(AX、BX、CX、DX、SI、DI、BP、SP)•4个段寄存器(CS、SS、DS、ES)•1个标志寄存器(FLAGS)•1个指令指针寄存器(IP)他们均为16位!图示汇编语言程序员看到的处理器,就是寄存器所以,一定要熟悉这些寄存器的名称和作用1.通用寄存器•8088有8个通用的16位寄存器•(1)数据寄存器:AXBXCXDX•(2)变址寄存器:SIDI•(3)指针寄存器:BPSP•4个数据寄存器还可以分成高8位和低8位两个独立的寄存器,这样又形成8个通用的8位寄存器•AX:AHALBX:BHBL•CX:CHCLDX:DHDLAX称为累加器(Accumulator)使用频度最高。用于算术、逻辑运算以及与外设传送信息等BX称为基址寄存器(BaseaddressRegister)常用做存放存储器地址CX称为计数器(Counter)作为循环和串操作等指令中的隐含计数器DX称为数据寄存器(Dataregister)常用来存放双字长数据的高16位,或存放外设端口地址1.通用寄存器---数据寄存器变址寄存器•16位变址寄存器SI和DI•常用于存储器变址寻址方式时提供地址•SI是源地址寄存器(SourceIndex)•DI是目的地址寄存器(DestinationIndex)•在串操作类指令中,SI、DI还有较特殊的用法指针寄存器指针寄存器用于寻址内存堆栈内的数据SP为堆栈指针寄存器(StackPointer),指示堆栈段栈顶的位置(偏移地址)BP为基址指针寄存器(BasePointer),表示数据在堆栈段中的基地址SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址堆栈(Stack)是主存中一个特殊的区域,采用“先进后出”或“后进先出”存取操作方式、而不是随机存取方式。用8088/8086形成的微机系统中,堆栈区域被称为堆栈段2.指令指针寄存器IP(InstructionPointer)为指令指针寄存器,指示主存储器指令的位置随着指令的执行,IP将自动修改以指示下一条指令所在的存储器位置IP寄存器是一个专用寄存器IP寄存器与CS段寄存器联合使用以确定下一条指令的存储单元地址标志寄存器标志(Flag)用于反映指令执行结果或控制指令执行形式;8088处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)。程序设计需要利用标志的状态标志寄存器-分类状态标志--用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它CFZFSFPFOFAF控制标志--可由程序根据需要用指令设置,用于控制处理器执行指令的方式DFIFTFOF111512DF10IF9TF8SF7ZF65AF43PF21CF0标志寄存器FLAGS进位标志CF(CarryFlag)当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=03AH+7CH=B6H,没有进位:CF=0AAH+7CH=(1)26H,有进位:CF=1零标志ZF(ZeroFlag)若运算结果为0,则ZF=1;否则ZF=03AH+7CH=B6H,结果不是零:ZF=084H+7CH=(1)00H,结果是零:ZF=1注意:ZF为1表示的结果是0符号标志SF(SignFlag)运算结果最高位为1,则SF=1;否则SF=03AH+7CH=B6H,最高位D7=1:SF=184H+7CH=(1)00H,最高位D7=0:SF=0有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态。奇偶标志PF(ParityFlag)当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=03AH+7CH=B6H=10110110B结果中有5个“1”,是奇数:PF=0PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作溢出标志OF(OverflowFlag)若算术运算的结果有溢出,则OF=1;否则OF=03AH+7CH=B6H,产生溢出:OF=1AAH+7CH=(1)26H,没有溢出:OF=0什么是溢出处理器内部以补码表示有符号数;8位表达的整数范围是:+127~-128;16位表达的范围是:+32767~-32768;如果运算结果超出这个范围,就产生了溢出;有溢出,说明有符号数的运算结果不正确。3AH+7CH=B6H,就是58+124=182,已经超出-128~+127范围,产生溢出,故OF=1;补码B6H表达真值是-74,显然运算结果也不正确•B6H=10110110B,最高位为1,作为有符号数是负数•对B6H求反加1等于:01001001B+1=01001010B=4AH=74•所以,B6H表达有符号数的真值为-74溢出和进位的区别溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确溢出和进位的对比例1:3AH+7CH=B6H无符号数运算:58+124=182范围内,无进位有符号数运算:58+124=182范围外,有溢出例2:AAH+7CH=(1)26H无符号数运算:170+124=294范围外,有进位有符号数运算:-86+124=28范围内,无溢出溢出和进位的应用场合处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出溢出的判断判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确其他情况下,则不会产生溢出例1:3AH+7CH=B6H(正+正=负)溢出例2:AAH+7CH(负+正)无溢出例3:3AH-7CH(正-正)无溢出例4:AAH-7CH=2DH(负-正=正)溢出辅助进位标志AF(AuxiliaryCarryFlag)3AH+7CH=B6H,D3有进位:AF=1运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心方向标志DF(DirectionFlag)用于串操作指令中,控制地址的变化方向:设置DF=0,存储器地址自动增加;设置DF=1,存储器地址自动减少CLD指令复位方向标志:DF=0STD指令

1 / 91
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功