版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微型计算机原理及应用郑猛北京理工大学光电学院
2023/2/112023/2/12
以Intel8086/8088、Z8000和MC68000为代表的16位微处理器是第3代产品,以它们为核心部件组成的微机系统,其性能已达到中、高档小型计算机的水平。20多年来,Intel系列CPU一直占着主导地位。尽管8086/8088后续的80286、80386、80486以及Pentium系列CPU结构与功能已经发生很大变化,但从基本概念与结构以及指令格式上来讲,它们仍然是经典的8086/8088CPU的延续与提升。并且,其他系列流行的CPU(如AMD公司的6X86MX/MⅡ等)也与80x86CPU兼容。内容提要8086/8088微处理器8086/8088系统的最小/最大工作方式8086/8088的存储器8086/8088指令系统第三章8086/8088微处理器及其系统2023/2/13透彻理解与熟练掌握8086/8088内部组成结构、寄存器结构与总线周期等内容;深入理解存储器的分段设计;正确理解与熟练掌握物理地址和逻辑地址关系;理解堆栈及其操作;理解“段加偏移”寻址机制;掌握寻址方式;掌握六大类指令系统的基本用法。2023/2/143.18086/8088微处理器2023/2/15
8086是Intel系列的16位微处理器,是iAPX86/88系列微机的基础。它采用高速运算性能的HMOS工艺制造,芯片上集成有2.9万个晶体管,用单一的+5伏电源和40条引脚的双列直插式封装;时钟频率为5MHz~10MHz,最快的指令执行时间为0.4μs。
8086有16根数据线和20根地址线,可以处理8位或16位数据,寻址1MB的存储单元和64KB的I/O端口(实际只使用1KBI/O端口)。 在推出8086之后不久,Intel公司还推出了准16位微处理器8088。8088的内部寄存器、运算器以及内部数据总线都是按16位设计的,但外部数据总线只有8条。这样设计的目的主要是为了与Intel原有的8位外围接口芯片直接兼容。在本节中,我们对8088也将加以说明。3.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/16从功能上讲,8086/8088可分为两个部分,即总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)。3.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/17总线接口部件BIU(BusInterfaceUnit)⑴功能:物理地址形成、取指令、指令排队、读/写操作数、总线控制。
⑵组成指令队列缓冲器16位段寄存器16位指令指针寄存器20位物理地址加法器总线控制电路⑶工作过程形成物理地址,发读信号(/RD),取指令送入指令队列。3.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/18总线接口部件BIU(BusInterfaceUnit)
8086的指令队列为6个字节,而8088的指令队列为4个字节。在执行指令的同时,存满一条指令就开始执行,指令队列空出两个指令字节时,BIU自动取指,填满为止。
并行流水线方式:某一时刻同时完成上述3项工作如:T1时刻,执行指令1、译码指令2、取指令3;
T2时刻,执行指令2、译码指令3、取指令4;微机执行指令所需基本工作:①取指令(从内存中取出指令→指令队列寄存器)。②译码(确定该指令为何种操作)。③时序控制(控制完成操作,如计算、数据传送等)。(1)指令队列缓冲器:3.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/19指令执行部件EU(ExecutionUnit)⑴功能指令译码、执行指令。
⑵组成16位算术逻辑单元ALU16位标志寄存器F数据暂存寄存器通用寄存器组EU控电路⑶工作过程从BIU的指令队列取得指令、进行译码、执行指令。3.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/1103.CPU的工作过程(1)先执行读操作,根据CS:IP在地址加法器,形成20位物理地址:CS×16+IP,从该地址取出指令,送入指令队列,等待执行。1234563.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/1113.CPU的工作过程(2)EU从队列中取出指令,并分析译码,向各部件发出控制命令,以完成执行指令的功能。EU对指令进行译码、分析和执行时,此时EU不需要用总线,BIU乘机可将后续指令读入指令对列,将队列填满。3456123.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/1123.CPU的工作过程(3)
当指令队列已满,EU未向BIU申请读/写存储器或I/O操作时,BIU处于空闲周期。
如EU执行8位数乘法指令MUL时,需70-77个时钟周期,取指令占两个总线周期(8个时钟周期),这段时间BIU就可以取指令填满队列,后续剩余时间BIU就处于空闲状态。123456ALU3.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/1133.CPU的工作过程(4)
在指令的执行过程中,若需要对存储单元或I/O端口存取数据,EU就要求BIU去完成相应的总线周期。123456总线控制电路3.18086/8088微处理器
3.1.1.
8086/8088CPU的内部结构2023/2/1143.CPU的工作过程(5)
若在指令执行过程中遇到JMP和CALL指令,将队列中内容作废,按新的转移地址中取指令码。
除这种情况外,取指令和执行指令都能同时进行。123456JMPCALL3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/115图3.38086/8088的编程结构CS:CodeSegmentDS:DataSegmentSS:StackSegmentES:ExtraSegment3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1161、通用寄存器
AX、BX、CX和DX—16位寄存器(可做16位、也可做2个8位用)。作用:①、通用用途:存放数据。②、专用用途:AX
:累加器(存运算结果)。
BX
:基址寄存器。
CX:在循环和串操作时做计数器。
DX:16位乘、除运算时,DX与AX组成32位字长(双字),存结果。在I/O(输入/输出)指令中,DX存放I/O口地址。
(1)数据寄存器:3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1171、通用寄存器
作用:存放下一次要取出执行的指令的偏移地址与CS结合使用构成真正的指令物理地址用户不能直接更新使用,只能由系统自动更新
SP、BP、SI、DI—16位寄存器。作用:①、通用用途:存放数据。②、专用用途:与地址和堆栈操作有关。(3)指令指针寄存器:(2)指针寄存器和变址寄存器:
3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1182、段寄存器
CS(程序)、DS(数据)、SS(堆栈)、ES(附加)—16位寄存器。作用:①、通用用途:存放数据。②、专用用途:与地址和堆栈操作有关。3、标志寄存器
1511109876543210OFDFIFTFSFZFAFPFCF状态标志(6个):CF、PF、AF、ZF、SF和OF控制标志(3个):TF、IF、DF3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1193、标志寄存器
1511109876543210OFDFIFTFSFZFAFPFCF☆状态位:表示某条指令执行后,产生的状态信息(如有否进位、结果是正还是负等),一般用于条件转移等的判断依据。
(1)CF(carryflag)进位标志
当加法(或减法)使最高位(D7
或D15)产生进(借)位时,CF=1,否则,CF=0;循环或移位指令也会使CF改变。
(2)PF(parityflag)奇偶标志
操作结果低8位中“1”的个数为偶数,PF=1,否则,PF=0。用于奇偶校验。3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1203、标志寄存器
1511109876543210OFDFIFTFSFZFAFPFCF☆状态位:
(3)AF(AuxiliaryCarryFlag)辅助进位标志:加(减)运算时,D3向D4进(借)位,AF=1,否则,AF=0。用于BCD码运算的十进制调整。
(4)ZF(ZeroFlag)零标志
运算结果为零,ZF为1,否则,ZF=0。(5)SF(SignFlag)符号标志
若运算结果最高位为1(即为负),SF=1,否则,SF=0。指示结果的正负。3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1213、标志寄存器
1511109876543210OFDFIFTFSFZFAFPFCF☆状态位:(6)OF(OverflowFlag)溢出标志
溢出标志用于判断在有符号数进行加法或减法时是否可能出现溢出。溢出将指示运算结果已超出机器能够表示的数值范围。注意:溢出是按补码情况规定的。即:8位时,超出-128~+127;16位时,超出-32768~+32767;溢出→OF=13.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1223、标志寄存器
例:
CF(CarryFlag)进位标志PF(ParityFlag)奇偶校验位10001000
+11001001010100011CF110001000
+0100100111010001PF13.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1233、标志寄存器
例:
ZF(ZeroFlag)零标志SF(SignFlag)符号标志
00000001
+11111111000000001ZF110001000
+0100100111010001SF13.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1243、标志寄存器
例:
AF(AuxiliaryCarryFlag)辅助进位标志OF(OverflowFlag)溢出标志
10001000
+11001001010100011AU1
01000000
+01000000100000000OF13.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1253、标志寄存器
01111110例:运算对标志位的影响的例01011011+11011001SF=1(结果最高位为1)ZF=0(结果不等于0)AF=1(D3向D4有进位)PF=0(1的个数为奇数)CF=0(无进位)OF=1(和超过127)
两个整数相加结果为负,反之亦然3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1263、标志寄存器
1511109876543210OFDFIFTFSFZFAFPFCF☆控制位:用来控制CPU的操作,由程序设置或清除。
(1)DF(DirectionFlag)方向标志
它用来控制数据串操作指令的步进方向。若用STD指令将DF置1,则数据串操作过程中地址会自动递减;若用CLD指令将DF清0,则数据串操作过程中地址会自动递增。3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1273、标志寄存器
1511109876543210OFDFIFTFSFZFAFPFCF☆控制位:用来控制CPU的操作,由程序设置或清除。
(2)IF(InterruptEnableFlag)中断允许标志
控制可屏蔽中断的标志。若用STI指令将IF置1,则表示允许8086/8088CPU接受外部从其INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IF清0,则禁止CPU接受外来的可屏蔽中断请求信号。IF的状态不影响非屏蔽中断(NMI)请求,也不影响CPU响应内部的中断请求。3.18086/8088微处理器
3.1.28086/8088的寄存器结构2023/2/1283、标志寄存器
1511109876543210OFDFIFTFSFZFAFPFCF☆控制位:用来控制CPU的操作,由程序设置或清除。
(3)TF(TrapFlag)跟踪(陷阱)标志:
若将TF标志置为1,则8086/8088CPU处于单步工作方式;否则,将正常执行程序。在高型号微处理器中,跟踪(陷阱)标志能够激活芯片上的调试特性(调试程序,以便找到错误或故障),当TF标志为1时,则微处理器将根据调试寄存器和控制寄存器的指示中断程序流。3.18086/8088微处理器
3.1.3总线周期2023/2/129
总线周期是微处理器操作时所依据的一个基准时间段,通常,它是指微处理器完成一次访问存储器或I/O端口操作所需的时间。指令周期执行一条指令所需的时间称为指令周期。不同指令的指令周期的长短是不同的。一个指令周期由几个总线周期组成。注意:在8086/8088CPU中,每个总线周期至少包含4个时钟周期(T1~T4),一般情况下,在总线周期的T1状态传送地址,T2~T4状态传送数据。时钟周期CPU的时钟频率的倒数,也称T状态。3.18086/8088微处理器
3.1.3总线周期2023/2/130时钟周期由计算机的主频决定,是CPU的定时基准例如:8086的主频f为5MHz,则1个时钟周期T为1/f=1/(5*106
)=200ns空闲时钟周期Ti,在两个总线周期之间插入等待时钟周期Tw,在总线周期的T3和T4之间插入
T1T2T3T4TiTi
T1T2T3TwTwTwT4TiTi
总线周期总线周期若干个1~2个GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU403938373635343332313029282726252423222112345678910111213141516171819203.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/131地址/数据总线AD15~AD016条地址/数据总线分时复用;三态;双向分时复用:在总线周期T1状态,A15~A0;在总线周期T2~T4状态,D15~D0;三态双向:传送地址时三态输出,传送数据时三态双向输入/输出,在中断响应及系统总线‘保持响应’周期,高阻。T1状态:输出要寻址的存储器或I/O端口地址T2状态;浮置成高阻状态,为传输数据做准备。T3状态;用于传输数据。T4状态;结束总线周期。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/132三态输入/输出
三态指的是高电平(1)、低电平(0)、高阻态(Z)三种状态,通常由三态门来实现。
采用原因:
1、大多数计算机中的信息传输线均采用总线形式,且信息是分时传送的。2、为防止信息相互干扰,要求凡挂在总线上的寄存器或存储器等,它的传输端不仅能呈现0、1两个信息状态,而且还应能呈现第三种状态——高阻抗状态(又称高阻状态)。
3、在高阻态好像它们的输出被断开,对总线状态不起作用,此时总线可由其它器件占用。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/133三态输入/输出
三态门即可实现上述的功能当控制端E=1时,输出=输入,此时总线由该器件驱动,总线上的数据由输入数据决定;当控制端E=0时,输出端呈高阻抗状态,该器件对总线不起作用。
当寄存器输出端接至三态门,再由三态门输出端与总线连接起来,就构成三态输出的缓冲寄存器。如下图所示就是一个4位的三态输出缓冲寄存器。由于这里采用的是单向三态门,所以数据只能从寄存器输出到数据总线。如果要实现双向传送,则要用双向三态门。响应中断时设为高阻3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1342.地址/状态总线A19/S6~A16/S3在总线周期T1状态,输出A19~A16。访问存储器时,T1状态时输出的A19~A16送到锁存器(8282)锁存,与AD15~AD0组成20位的地址信号;而访问I/O端口时,不使用这4条引线,A19~A16=0。在总线周期T2~T4状态,S6~S3输出状态信息。当系统总线处于“保持响应”状态,这些引脚被置成高阻状态。分时复用;三态;输出3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1352.地址/状态总线A19/S6~A16/S3S4S3当前正在使用的段寄存器00ES01SS10CS,或不需要使用段寄存器(I/O,INT)11DSS6=0,表明8086当前连在总线上;S5=0,禁止一切可屏蔽中断;S5=1,允许可屏蔽中断;
S4S3:指示当前正在使用哪一个段寄存器3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1363.控制总线
高8位数据总线允许/状态信号三态、输出。BHE/S716位数据传送时,在T1状态,用BHE指出高8位数据总线上数据有效,用AD0地址线指出低8位数据线上数据有效。在T2~T4状态,S7输出状态信息(在8086芯片设计中,S7末赋于实际意义)。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1373.控制总线RD读控制信号三态、输出。当RD为低电平时,表示CPU将要执行一个对存储器或I/O端口的读操作。对内存单元还是对I/O端口读取数据,取决于IO/M信号。在一个读操作的总线周期中,RD信号在T2、T3状态均为低电平,以保证CPU读有效。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1383.控制总线准备好信号线,输入。READY
当READY=1时,表示所寻址的内存或I/O设备已准备就绪,马上就可进行一次数据传输。CPU在每个总线周期的T3状态开始对READY信号采样。READY=0,表示存储器或I/O设备尚未准备就绪,则CPU在T3状态之后自动插入一个或几个等待状态Tw,直到READY变为高电平,才进入T4状态,完成数据传送过程,从而结束当前总线周期。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1393.控制总线等待测试输入信号,低电平有效。TEST
在CPU执行WAIT指令期间,每隔5个时钟周期对TEST引脚进行一次测试,若测试到TEST为高电平,CPU处于空转等待状态;当测试到TEST有效,空转等待状态结束,CPU继续执行被暂停的指令。
WAIT指令作用是用来使处理器与外部硬件同步。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1403.控制总线可屏蔽中断请求信号,高电平有效,输入。INTR
当INTR=1时,表示外设提出了中断请求,8086/8088在每个指令周期的最后一个T状态去采样此信号。若IF=1,则CPU响应中断,停止执行当前的指令序列,并转去执行中断服务程序。若IF=0,中断请求被屏蔽。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1413.控制总线非屏蔽中断请求输入信号,上升沿触发。NMI
此请求不受IF状态的影响,也不能用软件屏蔽,只要此信号一出现,CPU就会在现行指令结束后引起中断。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1423.控制总线复位输入信号,高电平有效。RESET
CPU接收到复位信号后,停止现行操作,并出始化段寄存器CS、DS、SS、ES,标志寄存器PSW,指令指针IP和指令队列,CS=0FFFFH。RESET信号至少保持4个时钟周期以上的高电平。复位过程:当它变为高电平时,CPU执行重启动过程,8086/8088将从地址FFFF0H开始执行指令。通常在FFFF0H单元开始的几个单元中存放一条无条件转移指令,将入口转到引导和装配程序中,实现对系统的初始化,引导监控程序或操作系统程序。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1433.控制总线系统时钟,输入。CLK
由8284A时钟发生器产生(该时钟信号的低/高之比常采用2∶1),8086CPU使用的时钟频率,因芯片型号不同,时钟频率不同,例8086为5MHz。3.18086/8088微处理器
3.1.48086/8088的引脚信号和功能2023/2/1443.控制总线最小/最大工作模式选择信号,输入。MN/MX当MN/MX接+5V时:CPU工作在最小模式,单处理器系统,CPU提供所有总线控制信号;当MN/MX接地时:
CPU工作在最大模式,CPU的S2~S0提供给总线控制器8288,由8288产生总线控制信号。3.18086/8088微处理器2023/2/1458088和8086CPU的不同之处指令队列:8088的指令队列长度是4个字节,指令队列中只要出现一个空闲字节时,CPU就会自动访问存储器,取指令来补充指今队列。读写周期:8088CPU中,BIU的总线控制电路与外部交换数据的总线宽度是8位,而EU的内部总线是16位,这样,对16位数的存储器读/写操作要两个读/写周期才可以完成。数据线:8088CPU外部数据总线只有8条,分时复用的地址/数据总线AD7~AD0;而AD15~AD8成为仅传递地址信息的A15~A8。存储器/IO端口信号:8088用M/IO信号代替M/IO信号,M/IO低电平时选通存储器,高电平时选通I/O接口。2023/2/1463.18086/8088微处理器时序:计算机操作运行的时间顺序。2023/2/1473.18086/8088微处理器学习引脚功能的应用例子:已知并行通讯接口芯片8255A的接口电路如图所示,端口地址分别为:90H、92H、94H和96H,请按要求完成下述功能:(1)利用74LS138译码器和逻辑门搭建地址译码电路,要求8255A各端口地址唯一。(2)画出8255A与8086最小系统的硬件接口连接线。(3)编写完整的汇编源程序,使开关K接到位置1时,数码管显示相应的数字13.28086/8088系统的最小/最大工作方式2023/2/148由8086/8088CPU构成的微机系统,有最小方式和最大方式两种系统配置。系统配置方式:最小模式(CPU的引脚MN/MX端接高电平+5V)最大模式(CPU的引脚MN/MX端接低电平地)系统配置特点:最小模式为单机系统,控制信号由CPU提供;最大模式为多处理器/协处理器系统,控制信号由总线控制器提供。CPU的24~31引脚意义不同3.28086/8088系统的最小/最大工作方式
3.2.1最小方式2023/2/149最小模式系统组成8086CPU存储器I/O接口芯片1片8284A,作为时钟发生器3片8282/8283或74LS373,作为地址锁存器2片8286/8287或74LS245,作为双向数据总线收发器(可不用)3.28086/8088系统的最小/最大工作方式
3.2.1最小方式2023/2/1508284A时钟发生器RESVccCLKREADYRESETRDWRM/IOALE8086CPUA19~A16AD15~AD0DENDT/RMN/MXVccSTB8282/8283OE8286/8287T地址/数据地址存储器(ROM、RAM)DATAI/O芯片(外部设备)DATABHEOEBHE20位16位地址总线数据总线地址锁存器收发器可选等待状态产生电路:向8284A的RDY端提供一个信号,经同步后,向CPU的READY线发“准备就绪”信号,通知CPU数据传送已完成,可推出当前总线周期RDY3.28086/8088系统的最小/最大工作方式
3.2.1最小方式2023/2/151
产生CLK信号,该CLK信号是8086CPU的内部和外部的时间基准信号,可由驱动门电路进行功率放大。时钟发生器82843.28086/8088系统的最小/最大工作方式
3.2.1最小方式2023/2/152GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU40393837363534333231302928272625242322211234567891011121314151617181920引脚定义中断响应信号(输出,低电平有效)CPU对外部发来的中断请求信号INTR的响应信号。在相邻的两个总线周期中送出两个负脉冲,第一个负脉冲通知外设接口已响应它的中断请求,外设接口收到第二个负脉冲信号后,向数据总线上放中断类型号。INTA3.28086/8088系统的最小/最大工作方式
3.2.1最小方式2023/2/153GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU40393837363534333231302928272625242322211234567891011121314151617181920引脚定义地址锁存信号(输出,高电平有效)CPU提供给地址锁存器8282/8283的控制信号。ALE在T1状态为高电平时,表示在当前地址/数据复用总线上输出的是有效地址,由地址锁存器把它作为锁存信号将地址所存。ALE3.28086/8088系统的最小/最大工作方式
3.2.2最大方式2023/2/154CPU的引脚MN/MX接地。在最大模式系统中需要增加总线控制器8288(或总线裁决器8289),以完成8086CPU为中心的多处理器系统的协调工作。CPU输出的状态信号S2~S0同时送给8288,由8288输出原CPU所有的控制信号:存储器读/写控制,I/O端口读/写控制,中断响应信号等。(可以增加总线裁决器8289来裁决总线使用权赋给哪个处理器,以实现多主控者对总线资源的共享)3.28086/8088系统的最小/最大工作方式
3.2.2最大方式2023/2/155地址锁存器收发器8284A时钟发生器OERESVccCLKREADYRESET8086CPUA19~A16AD15~AD0MN/MXSTB8282/8283OE8286/8287T地址/数据地址BHES0S1S2地址总线数据总线S1CLKS0S2DENDT/RALEIORCIOWCMWTCMRDCINTAAENCLKS2S1S0AEN82898288多主控者系统总线存储器(ROM、RAM)DATAI/O芯片(外部设备)DATA地址锁存器收发器GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU403938373635343332313029282726252423222112345678910111213141516171819203.28086/8088系统的最小/最大工作方式
两种模式下8086CPU的24~31引脚定义2023/2/1563.38086/8088的存储器2023/2/157
3.3.1存储器组织
存储器中任何两个相邻的字节被定义为一个字,每个字节都有一个地址,并且这两个地址中的较小的一个被用来作为该字的地址。内存地址存储器说明00000H07低字节,字以偶地址开始00001H6B高字节,表示的数为6B07H00002H00003H00004H00005H60低字节,字以奇地址开始00006H3E高字节,表示的数为3E60H00007H规则存放非规则存放字在存储器中的存放3.38086/8088的存储器2023/2/158
3.3.1存储器组织
8086中,存储器采用分体结构,即1MB的存储空间分成两个512KB的存储体,一个存储体含偶地址,一个奇地址。存储器的组成奇数地址D15—D8D7—D0偶数地址00001H00002H00003H00004H00005H00006H...512K×8奇地址存储体(BHE=0)512K×8偶地址存储体(A0=0)...FFFFFHFFFFEH3.38086/8088的存储器2023/2/159
3.3.1存储器组织
8086中,存储器采用分体结构,即1MB的存储空间分成两个512KB的存储体,一个存储体含偶地址,一个奇地址。存储器的组成BHEA0读写的字节00同时读/写高低两个字节01只读/写奇数地址的高位字节10只读/写偶数地址的低位字节11不传送
8088中存储器为单一的存储体,即1MB×8位。3.38086/8088的存储器2023/2/160
3.3.2存储器的分段问题的提出——存储器为什么要分段使用?8086/8088CPU的寄存器都是16位,故只能直接寻址216=
64KB的地址空间。但是8086/8088设计有20根地址线,寻址范围:220=1MB。所以,8086/8088系统采用分段并附以地址偏移量的方法形成20位物理地址。被划分的存储器段称为逻辑段。3.38086/8088的存储器2023/2/161
3.3.2存储器的分段特点:1、可以任意划分段,容量不大于64KB(不小于16B);2、段之间可以重叠。代码段附加段堆栈段数据段≤64KB≤64KB≤64KB≤64KB10000H250A0H7FFA0H8CFA0H1000H7FFAH8CFAH250AHCSSSDSES例:代码段(CS)、附加段(ES)、堆栈段(SS)、数据段(DS)的段地址分别为1000H、250AH、7FFAH和8CFAH,它们在存储器中的分布。3.38086/8088的存储器2023/2/162
3.3.2存储器的分段段基址:每个段的20位起始地址。段基址是一个能被16整除的数(即后4位为0)。段地址是20位段基址的高16位。要寻址20位地址,还需要段内的相对地址(偏移地址),由段地址和偏移地址通过计算得出实际地址(物理地址)。3.38086/8088的存储器2023/2/163
3.3.3实际地址和逻辑地址逻辑地址:指在程序和指令表示中的一种地址,包括段地址和偏移地址。实际地址:指CPU对存储器进行访问时实际寻址所使用的地址,又称为物理地址。段地址×16偏移地址物理地址+=3.38086/8088的存储器2023/2/1
3.3.3实际地址和逻辑地址实际地址表示方法:
段基值:偏移量例如,3267H:00A0H逻辑地址 1460:100、1380:F00物理地址 14700H14700H3.38086/8088的存储器2023/2/165
3.3.3实际地址和逻辑地址20002000000002000H:0000H2000H:0001H2000H:0002H2000H:0003H2000H:FFFFH1FF0H0100H1FF0200000100
物理地址是唯一的,逻辑地址不是唯一的3.38086/8088的存储器2023/2/166
3.3.3实际地址和逻辑地址段寄存器和其他寄存器组合指向存储单元示意图当取指令时,CPU选择代码段寄存器CS,再和指令指针IP的内容一起形成指令所在单元的20位物理地址;当进行堆栈操作时,CPU选择堆栈段寄存器SS,再和堆栈指针SP或基址指针BP形成20位堆栈地址。3.38086/8088的存储器2023/2/167
3.3.4堆栈
堆栈是用段定义语句在存储器定义的一个堆栈段,与其他逻辑段一样,可以在1MB的存储空间浮动。堆栈数目不限,最大为64KB。段地址由SS指定,栈顶由堆栈指针SP指定。
堆栈存取数据的原则是“先进后出”,存取数据的方法是压入(PUSH)和弹出(POP)。指针SP的变化由CPU自动管理。
每执行一条PUSH指令,SP=(SP)-2,SP指向新栈顶,然后将低位数据压入(SP)单元,高位数据压入(SP+1)单元。每执行一条POP指令,CPU先将当前的栈顶SP(低位数据)和SP+1(高位数据)中的内容弹出,然后再自动修改指针,SP=(SP)+2。SP指向新栈顶。3.38086/8088的存储器2023/2/168
3.3.4堆栈
例题若已知当前SS=1050H,SP=0008H,AX=1234H,则8086系统中堆栈的入栈和出栈操作如下图所示。12AA…10500H10501H10502H10503H10504H10505H10506H10507H10508H栈底BB10509H段地址(SS)AX3412123434PUSHAX1050AHBBAAAABB1234BX34POPBXPOPAX12栈顶SP3.48086/8088的指令系统
3.4.1指令系统的特点及指令基本格式简介
8086与8088指令系统由8位8080/8085指令系统扩展而来,同时又能在其后续的80X86系列的CPU上正确运行,所以具有向上兼容的特性。主要特征如下:
①可变长指令,指令格式由1~6个字节组成,比较复杂;②寻址方式多样灵活,处理数据的能力较强(可处理字节、字、带符号/无符号二进制数据及压缩型/非压缩型十进制数据;③有重复指令和乘除运算指令。扩充了条件转移、移位/循环指令;④有软件中断功能和支持多处理器系统工作的指令。2023/2/1693.48086/8088的指令系统2023/2/170
3.4.1指令系统的特点及指令基本格式简介指令组成操作码操作数或操作数地址操作码:计算机所要执行的操作类型,由一组二进制代码表示。在汇编语言中用助记符表示。操作数:各种操作的对象,可以是具体的数值、寄存器或存储器地址,可有0/1/2个。MOVAX,1000H立即数3.48086/8088的指令系统2023/2/171
3.4.1指令系统的特点及指令基本格式简介指令组成操作码操作数或操作数地址无操作数:控制类指令单操作数:只给出一个操作数地址,该操作数可在寄存器或存储器中,也可直接指令中给出立即数。双操作数:源操作数、目的操作数。一个操作数在寄存器中,另一个在寄存器或存储器中,或指令中直接给出立即数。不允许两个都在存储器中。单操作数指令INC CXDEC AX无操作数指令STCCLI双操作数指令ADD CX,1SUB AX,13.48086/8088的指令系统2023/2/172
3.4.1指令系统的特点及指令基本格式简介指令格式:
3.48086/8088的指令系统2023/2/173
3.4.1指令系统的特点及指令基本格式简介MOD≠11:存储器方式,有一个操作数位于存储器中MOD=00,没有位移量MOD=01,只有低八位位移量MOD=10,有16位位移量MOD=11:寄存器方式,两个操作数均在寄存器中。3.48086/8088的指令系统2023/2/174
3.4.1指令系统的特点及指令基本格式简介REG用来确定某一个操作数所在寄存器的编码;R/M受MOD制约MOD=11某操作数所在寄存器编码;MOD≠11某操作数所在存储单元有效地址EA,共24种计算方法。3.48086/8088的指令系统2023/2/175
3.4.2寻址方式1、固定寻址2、立即数寻址3、寄存器寻址4、存储器寻址直接寻址间接寻址基址寻址变址寻址基址加变址寻址5、其它方式寻址串操作指令寻址I/O端口寻址转移类指令寻址3.48086/8088的指令系统2023/2/176
3.4.2寻址方式操作数的位置操作数名称寻址方式名称在指令中立即数立即寻址(immediateaddressing)在寄存器中寄存器操作数寄存器寻址(registeraddressing)在存储器中存储器操作数存储器寻址(memoryaddressing)在I/O端口中I/O操作数I/O端口寻址(I/Oportaddressing)3.48086/8088的指令系统2023/2/177
3.4.2寻址方式1、固定寻址例:加法的ASCII调整指令AAA,规定被调整的数总是位于AL中。(隐含使用某些寄存器)2、立即数寻址操作数就在指令中,当执行指令时,CPU直接从指令队列中取得该立即数,而不必另外执行总线周期去内存取数。立即数可以是8位,也可以是16位,规定只能是整数类型的源操作数。主要用来给寄存器赋初值,指令执行速度快。例:MOVAX,1680H;将1680H送入AX,AH中16H,AL中80H3.48086/8088的指令系统2023/2/178
3.4.2寻址方式3、寄存器寻址操作数放在CPU的寄存器中,指令中给出寄存器名,源操作数和目的操作数均可采用寄存器寻址方式。寄存器寻址需要使用总线周期吗?对16位操作数,寄存器可以是8个16位通用寄存器(AX、BX、CX、DX、SP、BP、SI和DI);对于8位操作数寄存器只能是AH、AL、BH、BL、CH、CL、DH和DL)3.48086/8088的指令系统2023/2/179
3.4.2寻址方式3、寄存器寻址例:MOVAX,SS;将SS的内容送入AX①操作数存放在CPU内部的某个寄存器中,指令中不出现操作数本身,而是给出存放操作数的寄存器的名字。②寄存器寻址既可用于源操作数,也可用于目的操作数。MOV
CL,BL
;将BL中的8位寄存器操作数送寄存器CL中MOV
AX,DX
;将DX中的16位寄存器操作数送寄存器AX中MOV
DS,AX
;将AX中的16位寄存器操作数送寄存器DS中INC
SI ;将SI寄存器的内容加1
MOVCS,AX
MOVAH,BX××并非所有寄存器都可自由使用。源、目的操作数的字长必须一致。3.48086/8088的指令系统2023/2/180
3.4.2寻址方式4、存储器寻址①源和目的操作数之一为存储器地址,两者不能同时使用。②当EU单元需要读写位于存储器中的操作数时,必须经总线控制逻辑电路进行存取。(需执行总线周期)③用方括号[]表示对存储器寻址。例:MOVAX,[1680H];把1680H和1681H两个单元的内容取入AX直接寻址3.48086/8088的指令系统2023/2/181
3.4.2寻址方式4、存储器寻址有效地址计算通式(有效地址即操作数地址的偏移量)存放在基址寄存器中的内容,常用来指向数据段中数组或字符串的首地址存放在变址寄存器中的内容,常用来访问数组中的某个元素或字符串中的某个字符位移量。存放在指令中的一个0位、8位、16位的数,但它不是立即数,而是一个地址。例:MOVAX,[BX];把数据段中以BX为有效地址的存储单元中的内容送到AX基址寻址3.48086/8088的指令系统2023/2/182
3.4.2寻址方式例:MOVAX,[SI];把数据段中以SI为有效地址的存储单元中的内容送到AX变址寻址例:MOVAX,[BP+SIH];把数据段中以BP+SIH为有效地址的存储单元中的内容送到AX基址加变址寻址3.48086/8088的指令系统2023/2/183
3.4.2寻址方式寻址方式有效地址EA默认的段寄存器直接寻址(③)[DISP]DS寄存器间接寻址(①/②)[BX]DS[BP]SS[SI]DS[DI]DS基址寻址(①+③)[BX+DISP]DS[BP+DISP]SS变址寻址(②+③)[SI+DISP]DS[DI+DISP]DS基址加变址寻址(①+②+③)[BX+SI+DISP(或无DISP)]DS[BX+DI+DISP(或无DISP)]DS[BP+SI+DISP(或无DISP)]SS[BP+DI+DISP(或无DISP)]SSDISP:8位或16位相对位移量3.48086/8088的指令系统2023/2/184
3.4.2寻址方式例:设DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H,试判断下列指令的寻址方式,并求出寄存器与位移量所确定的有效地址EA和实际地址(物理地址)PA。并说明指令执行结果。有效地址EA在指令中直接给出,默认段是DS。可使用段跨越前缀
MOVAX,ES:[1680H]①MOVAX,[0618H]直接寻址方式EA=0618HPA=12000HH=12618H将数据段的实际地址12618H和12619H两单元的字内容取出送入AX3.48086/8088的指令系统2023/2/185
3.4.2寻址方式例:设DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H②MOVAX,[BX]基址寄存器间接寻址方式EA=05A6HPA=12000H+05A6H=125A6H将数据段的实际地址125A6H和125A7H两单元的字内容取出送入AX③MOVAX,[BP]堆栈段基址寄存器间接寻址方式EA=40A0HPA=50000H+40A0H=540A0H将堆栈段的540A0H和540A1H两单元的字内容取出送入AX3.48086/8088的指令系统2023/2/186
3.4.2寻址方式例:设DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H④MOVAX,[DI]变址寄存器间接寻址方式EA=3000HPA=12000HH=15000H将数据段的15000H和15001H两单元的字内容取出送入AX⑤MOVAX,[BX+DI]基址加变址寄存器间接寻址方式EA=05A6H=35A6PA=12000H+35A6H=155A6H将堆栈段的155A6H和155A7H两单元的字内容取出送入AX3.48086/8088的指令系统2023/2/187
3.4.2寻址方式例:设DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H⑥MOVAX,[BP+SI+DISP]基址加变址寄存器间接寻址EA=40A0HHH=76B8HPA=50000H+76B8H=576B8H将堆栈段的576B8H和576B9H两单元的字内容取出送入AX基址加变址寄存器间接寻址方式3.48086/8088的指令系统2023/2/188
3.4.2寻址方式基址加变址寄存器间接寻址基址加变址寄存器间接寻址方式总结:带方括号的地址表达式必须遵循下列规则:
(1)立即数可以出现在方括号内,表示直接地址,如[2000H]。
(2)只有BX、BP、SI、DI这四个寄存器可以出现在[]内,它们可以单独出现,也可以相加,或与常数相加,但BX和BP寄存器、SI和DI寄存器不允许出现在同一个[]内。(3)不同寄存器对应不同的隐含段基址:
SS:BP
DS:BX,SI,DI可用段超越前缀修改段基址。3.48086/8088的指令系统2023/2/189
3.4.2寻址方式数据串(或称字符串)指令不能使用正常的存储器寻址方式来存取数据串指令中使用的操作数。执行数据串指令时,源串操作数第1个字节或字的有效地址应存放在源变址寄存器SI中(不允许修改),目标串操作数第1个字节或字的有效地址应存放在目标变址寄存器DI中(不允许修改)。在重复串操作时,8086/8088能自动修改SI和DI的内容,以使它们能指向后面的字节或字。因指令中不必给出SI或DI的编码,故串操作指令采用的是隐含寻址方式。串操作指令寻址5、其他寻址方式3.48086/8088的指令系统2023/2/190
3.4.2寻址方式
在8086/8088指令系统中,输入/输出指令对I/O端口的寻址可采用直接或间接两种方式。
(1)直接端口寻址:
I/O端口地址以8位立即数方式在指令中直接给出。例如INAL,n。所寻址的端口号只能在0~255范围内。
(2)间接端口寻址:
这类似于寄存器间接寻址,16位的I/O端口地址在DX寄存器中,即通过DX间接寻址,故可寻址的端口号为0~65535(实际为0~1023)。例如OUTDX,AL。它是将AL的内容输出到由(DX)指出的端口中去。I/O端口寻址5、其他寻址方式3.48086/8088的指令系统2023/2/191
3.4.2寻址方式
在8086/8088系统中,由于存储器采用分段结构,所以转移类指令有段内转移和段间转移之分。所有的条件转移指令只允许实现段内转移,而且是段内短转移,即只允许转移的地址范围在-128~+127字节内,由指令中直接给出8位地址位移量。转移类指令寻址5、其他寻址方式3.48086/8088的指令系统2023/2/192
3.4.3指令的分类
在8086/8088指令系统中,包含133条基本指令。按功能指令可以分为6类:1、数据传送2、算数运算3、逻辑运算4、串操作5、程序控制6、处理器控制3.48086/8088的指令系统2023/2/193
3.4.3指令的分类
1、数据传送指令可完成寄存器与寄存器之间、寄存器与存储器之间以及寄存器与I/O端口之间的字节或字传送。特点:不影响标志寄存器的内容(除SAHF和POPF)。共14小条,分为4小类通用数据传送目标地址传送标志位传送I/O数据传送3.48086/8088的的指令系统2023/2/194
3.4.3指令的分类
1、数据传送指令通用数据传送指令目标地址传送指令MOV字节或字的传送LEA装入有效地址PUSH入栈指令LDS装入数据段寄存器POP出栈指令LES装入附加段寄存器XCHG交换字或字节标志传送指令XLAT表转换LAHF标志寄存器低字节装入AH输入输出指令SAHFAH内容装入标志寄存器低字节IN输入PUSHF标志寄存器入栈指令OUT输出POPF出栈,并送入标志寄存器3.48086/8088的指令系统2023/2/195
3.4.3指令的分类
1、数据传送指令通用数据传送指令⑴MOVd,s;将由源操作数s指定的内容送到目标操作数d中。源操作数:可以是8/16位寄存器、存储器中的某个字节/字或者是8/16位立即数。目的操作数:可以是8/16位寄存器、存储器中的某个字节/字,不能是立即数。立即数段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人购房合同书2024版标准格式示例一
- 2025年度宠物宠物医院宠物疫苗接种服务合同2篇
- 二零二五年度光伏发电租赁空地投资合同
- 2025年度绿色消费维权赔偿与环保责任合同
- 二零二五年度门面房转租及品牌推广合同
- 二零二五年度智能设备购销合同图片定制与培训服务合同
- 二零二五年度解除聘用合同及离职员工离职证明协议
- 2025年度门窗行业行业论坛与展览组织合同4篇
- 2025版城市集中供热天然气购销合同模板3篇
- 2025版国际化教育机构兼职外教招聘与管理服务合同6篇
- 第22单元(二次函数)-单元测试卷(2)-2024-2025学年数学人教版九年级上册(含答案解析)
- 安全常识课件
- 河北省石家庄市2023-2024学年高一上学期期末联考化学试题(含答案)
- 小王子-英文原版
- 新版中国食物成分表
- 2024年山东省青岛市中考生物试题(含答案)
- 河道综合治理工程技术投标文件
- 专题24 短文填空 选词填空 2024年中考英语真题分类汇编
- 再生障碍性贫血课件
- 产后抑郁症的护理查房
- 2024年江苏护理职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
评论
0/150
提交评论