计算机大三专业课汇编语言第2章_第1页
计算机大三专业课汇编语言第2章_第2页
计算机大三专业课汇编语言第2章_第3页
计算机大三专业课汇编语言第2章_第4页
计算机大三专业课汇编语言第2章_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

第2章微处理器2主要内容:8088/8086微处理器特点主要引线功能和内部结构内部寄存器实地址模式下的存储器寻址总线时序3一、8088/8086CPU的特点41.

8088/8086CPU的特点采用并行流水线工作方式

——通过设置指令预取队列实现对内存空间实行分段管理

——

将内存分为4个段并设置地址段寄存器,以实现对1MB空间的寻址支持多处理器系统CPU内部结构存储器寻址部分工作模式52.8088CPU的两种工作模式8088可工作于两种模式下

最小模式最大模式最小模式为单处理器模式,控制信号较少,一般可不必接总线控制器。最大模式为多处理器模式,控制信号较多,须通过总线控制器与总线相连。6最小模式下的总线连接示意图8088CPU••控制总线数据总线地址总线地址锁存数据收发ALE时钟发生器7最大模式下的总线连接示意图8088CPU数据总线地址总线地址锁存数据收发ALE时钟发生器总线控制器

控制总线8两种工作模式的选择方式8088是工作在最小还是最大模式由MN/MX引线的状态决定。MN/MX=0——工作于最大模式MN/MX=1——工作于最小模式9二、8088/8086的引线及功能101.主要引线——最小模式下的8088引线8088引脚图AD0—AD7:低8位地址和低8位数据信号分时复用。在传送地址信号时为单向,传送数据信号时为双向。A8—A15:8位地址信号A16--A19:高4位地址信号,与状态信号分时复用。地址线,数据线11SS0与IO/M、DT/R决定了当前的总线周期的状态(见附录B.1)S6(与A19复用)恒为0S5(与A18复用)表示IF的状态S3(与A16复用)与S4(与A17复用)组合表示当前正在使用的段寄存器状态线S4S3当前正在使用的段寄存器00ES01SS10CS或未使用任何段寄存器11DS1213主要的控制WR:写信号;RD:读信号;IO/M:为“0”表示访问内存,为“1”表示访问接口;DEN:低电平有效时,允许进行读/写操作;DT/R:数据收发器的传送方向控制;ALE:地址锁存信号;14例:当WR=1,RD=0,IO/M=0时,表示CPU当前正在进行读存储器操作READY信号外部同步控制输入信号,高电平有效8088与内存/外设之间在一个总线周期内的时钟配合信号8086/8088IO接口/内存RD#喂,我要读数据了,你准备好了吗?等等我,我还有点问题Ready=01516中断请求和响应信号INTR:可屏蔽中断请求输入端NMI:非屏蔽中断请求输入端INTA:中断响应输出端17总线保持信号HOLD:总线保持请求信号输入端。当CPU

以外的其他设备要求占用总线时,通过该引脚向CPU发出请求。HLDA:总线保持响应信号输出端。CPU对

HOLD信号的响应信号。18其它信号Vcc:5v电源输入引脚。GND:地线。TEST:测试信号输入引脚。当CPU执行wait指令时,每5个时钟周期将对引脚进行测试,为低电平时结束等待。RESET:复位信号。指令队列清空;CS为0FFFFH,其余寄存器为0.CLK:时钟信号输入引脚。

总线周期状态信号(输出、三态)(见附录B.2),CPU并不直接向外界提供全部控制信号,而由通过Intel8288总线控制器提供8088最大模式的信号8288输出命令CPU状态中断响应读I/O端口写I/O端口暂停取指令读存储器写存储器无源状态INTAIORCIOWCAIOWC无MRDCMRDCMWTC,AMWC无000001111110100011010101SS21S019

总线请求(输入)/总线请求允许信号(输出)(双向、均为低电平有效

总线封锁信号(输出、三态、低电平有效)QS0,QS1指令队列状态信号(输出)8088最大模式的信号

总线请求(输入)/总线请求允许信号(输出)(双向、均为低电平有效

总线封锁信号(输出、三态、低电平有效)QS0,QS1指令队列状态信号(输出)(见附录B.3)HIGH始终为高电平RD引脚不再使用20212.8088和8086CPU引线功能比较数据总线宽度不同8088的外部数据总线宽度是8位,8086为16位。访问存储器和输入输出控制信号含义不同8088——IO/M=0表示访问内存;8086——IO/M=1表示访问内存。其他部分引线功能的区别在8086中SS0引脚改为BHE,以适应16位的数据宽度22三、8088/8086的内部结构231.组成8088/8086内部由两部分组成:执行单元(EU)总线接口单元(BIU)242.执行单元运算器8个通用寄存器1个标志寄存器

EU部分控制电路25执行单元功能指令译码指令执行暂存中间运算结果保存运算结果特征指令的执行在标志寄存器FLAGS中在ALU中完成在通用寄存器中263.总线接口单元功能:从内存中取指令到指令预取队列指令预取队列是并行流水线工作的基础负责与内存或输入/输出接口之间的数据传送在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行。27结论指令预取队列的存在使EU和BIU两个部分可同时进行工作,即:实现指令的并行执行目的:提高了CPU的效率;降低了对存储器存取速度的要求28四、内部寄存器29内部寄存器的类型301.通用寄存器数据寄存器(AX,BX,CX,DX)地址指针寄存器(SP,BP)变址寄存器(SI,DI)31数据寄存器8088/8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:AXBXCXDXAH,ALCH,CLBH,BLDH,DL32数据寄存器特有的习惯用法AX:累加器。所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中;BX:基址寄存器。在间接寻址中用于存放基地址;CX:计数寄存器。用于在循环或串操作指令中存放计数值;DX:数据寄存器。在间接寻址的I/O指令中存放

I/O端口地址;在32位乘除法运算时,存放高16位数。33地址指针寄存器SP:堆栈指针寄存器,其内容为栈顶的偏移地址;BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。34BX与BP在应用上的区别作为通用寄存器,二者均可用于存放数据;作为基址寄存器,用BX表示所寻找的数据在数据段;用BP则表示数据在堆栈段。35变址寄存器SI:源变址寄存器DI:目标变址寄存器变址寄存器在指令中常用于存放数据在内存中的地址。2.控制寄存器IP指令指针寄存器,其内容为下一条要执行指令的偏移地址。FLAGS标志寄存器,存放运算结果的特征6个状态标志位(CF,SF,AF,PF,OF,ZF)3个控制标志位(IF,TF,DF)内存中的程序指令1指令2指令n┇分析获取操作数执行存放结果┇程序计数器PC(IP)地址CPU取出操作数3637标志寄存器FLAGS38状态标志位(1)CF(CarryFlag)进位标志位。加(减)法运算时,若最高位有进(借)位则CF=1PF(ParityFlag)奇偶标志位。运算结果的低8位中“1”的个数为偶数时PF=lAF(AuxiliaryCarryFlag)辅助进位标志位。加(减)操作中,若Bit3向Bit4有进位(借位),AF=139状态标志位(2)ZF(ZeroFlag)零标志位。当运算结果为零时ZF=1SF(SignFlag)符号标志位。当运算结果的最高位为1时,SF=lOF(OverflowFlag)溢出标志位。当算术运算的结果超出了有符号数的可表达范围时,OF=l

40状态标志位例给出以下运算结果及运算后各状态标志位的状态:10110110+11110100101010101CF=OF=AF=PF=SF=ZF=10101041控制标志位TF(TrapFlag)陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指令的工作方式。IF(InterruptEnableFlag)中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求。DF(DirectionFlag)方向标志位。在数据串操作时确定操作的方向。3.段寄存器作用:用于存放相应逻辑段的段基地址8086/8088CPU在使用存储器时,将它划分成若干个逻辑段。每个逻辑段用来存放不同目的内容,如程序代码、数据等等。每个逻辑段用一个段寄存器来指明该段的起始位置(也叫段基址)。428086/8088内存中逻辑段的类型代码段数据段附加段堆栈段8086/8088内存中逻辑段的数量最多为64K个43CS:代码段寄存器,存放代码段的段基地址。DS:数据段寄存器,存放数据段的段基地址。ES:附加段寄存器,存放数据段的段基地址。SS:堆栈段寄存器,存放堆栈段的段基地址………………代码段数据段堆栈段附加段ESCSDSSS段寄存器段基址段基址段基址段基址44五、8086/8088的存储器组织451.

内存单元的编址物理地址每个内存单元在整个内存空间中具有的惟一的地址。8086/8088CPU有20根地址线,它可以产生20位的地址码,寻址范围为220,即1兆字节空间。这一兆字节存储单元的地址范围为:00…...0~11…...1。20位20位46…...07存储单元(字节)二进制数地址000000000000000000000000000000000000000100000000000000000010…...

10

11十六进制数地址00000H00001H00002HFFFFEHFFFFFH…...为了方便书写,在源程序中常用5位十六进制数或一个符号来表示一个存储单元的地址。47例如,将数据3456H放在地址为09235H的存储单元中的存储分配。......地址存储单元09235H09236H5634任何两个相邻字节单元就构成一个字单元字单元的地址为两个字节单元中较小地址字节单元的地址。字数据的存放规则是低8位放在较低地址字节单元中,高8位放在较高地址字节单元中。48逻辑地址将内存划分成多个逻辑段后,就使用逻辑地址来指示存储单元。使用逻辑地址方便了程序的开发和对存储器进行动态管理。每个存储单元的逻辑地址由两部分组成16位的段(基)地址---决定该逻辑段在内存中的位置16位的段内地址,也叫相对地址,或偏移地址---决定该存储单元相对段起始单元的距离逻辑段的起始单元称为段首---段首的偏移地址=0490000段基地址(16位)段首地址(段首的物理地址)××ו••×××1904逻辑段的起始单元称为段首---段首的偏移地址=0例:段基地址=6000H段首地址偏移地址=0009H物理地址数据段60009H00H12H60000H9508086/8088的存储器段结构的特点:1.每个段最大长度为64K(65536)个字节单元组成。2.每个段的起始地址(段基址)必须是一个小节的首址。从0地址开始,每16个字节单元称为一个小节(Paragraph)1MB内存就可划分为64K个小节。第1小节:00000H,00001H,00002H……0000FH第2小节:00010H,00011H,00012H……0001FH第65535小节:FFFE0HFFFE1HFFFE2H……FFFEFH第65536小节:FFFF0HFFFF1HFFFF2H……FFFFFH…..…..…..…..…..每个小节的首地址最低位必为0(16进制数表示)。因此段基址只能是上述64K个小节首址之一。513.逻辑段在物理存储器中可以是邻接的、间隔的、部分重叠的和完全重叠的等4种情况。内存中的一个物理存储单元可以映象到一个或多个逻辑段中邻接部分重叠完全重叠间隔DA_BYTE物理单元可以映象到逻辑段2、段3和段4中。物理存储器00000H10000HDA_BYTE段1段2段3段4段5逻辑段0FFFFFH524.在任一时刻,一个程序只能访问4个当前段中的内容。4个段分别是代码段、数据段、堆栈段和附加段,称为当前段。4个段寄存器CS、DS、SS和ES分别保存了当前段的段基址的高16位地址,称为段基值。段基址的最低4位为0。(小节首址的低4位为全0)。5354例:已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H画出各段在内存中的分布。CS=1055H段首地址=10550HDS=250AH段首地址=250A0HES=2EF0HSS=8FF0H10550H250A0H2EF00H8FF00H代码段数据段附加段堆栈段542.逻辑地址与物理地址的转换内存物理地址由段基地址和偏移地址组合而成物理地址=段基地址×16+偏移地址0000段基地址××ו••×××1904××ו••×××偏移地址+150××ו••×××190物理地址55例设某操作数存放在数据段,DS=250AH,数据所在单元的偏移地址=0204H。则该操作数所在单元的物理地址为:250AH×16H=252A4H560915H003AH09150H003AH+)0918AH偏移量段基值逻辑地址物理地址例:同一个物理地址002D3H被两个逻辑段中的逻辑地址映射的情况。002B0HH=002D3H002C0HH=002D3H例:偏移量23H段1基址002B0H段2基址002C0H002D3H偏移量13H………左移4位574.堆栈及堆栈段的使用堆栈:堆栈是一个特定的存储区,访问该存储区一般需要按照专门的规则进行操作。主要用于暂存数据以及在过程调用或处理中断时保存断点信息。堆栈一般分为专用堆栈存储器和软件堆栈按堆栈的工作方式专门设计的存储器专用堆栈存储器软件堆栈由程序设计人员用软件在内存中划出的一块存储区作为堆栈来使用。8086/8088采用这种方式。58堆栈已存放数据TOPBottom......主存00000H堆栈的一端是固定的,称为栈底。栈底是堆栈存储区的最大地址单元。另一端是浮动的,称为栈顶。在任何时刻,栈顶是最后存入信息的存储单元。栈顶是随着堆栈中存放信息的多少而改变。为了指示堆栈中栈顶的位置,通常设置一个寄存器来指示栈顶位置。其内容就象一个指针一样,因此被称为堆栈指针SP(StackPointer)。SP的内容始终指向栈顶单元堆栈中数据进出都由SP来控制59在堆栈中存取数据的规则是:“先进后出FILO”(First-InLast-Out)。即最先送入堆栈的数据要到最后才能取出,而最后送入堆栈的数据,最先取出。8086/8088堆栈的组织在8086/8088微机中堆栈是由堆栈段寄存器SS指示的一段存储区。SSSP堆栈BottomTopXXXXXXXXXXXX堆栈初始化时的SP60数据在堆栈中以字为单位存放,低8位放在较低地址单元,高8位放在较高地址单元。SP被初始化时指向栈底+2单元,其值就是堆栈的长度。由于SP是16位寄存器,因此堆栈长度

64K字节。

SP始终表示堆栈段基址与栈顶之间的距离(字节数)。当SP为最大(初始)值时,表示堆栈为空。当SP为0时,表示堆栈全满。当用户程序中要求的堆栈长度超过一个堆栈段的最大长度64KB时,可以设置多个堆栈段。61例:已知SS=1000H,SP=0100H则:堆栈段的段首地址=栈顶(偏移)地址=若该段最后一个单元地址为10200H,则:栈底偏移地址=段首栈底栈顶堆栈区10000H0100H0200H6263六、8086/8088总线64时序时序:CPU各引脚信号在时间上的关系总线周期的概念

CPU通过系统总线来完成与存储器、I/O端口之间的操作,取得指令或传送数据,这些操作统称为总线操作。执行一个总线操作所需要的时间,即CPU通过总线对外部存储器或I/O接口进行一次访问所需的时间,则称为总线周期。时钟信号是一定电压幅度,一定时间间隔发出的脉冲信号CLKCPU主频即CPU内核工作的时钟频率(CPUClockSpeed),它表示在CPU内数字脉冲信号震荡的速度。

65

每个T状态包括:下降沿、低电平、上升沿、高电平CLKT相邻两个脉冲之间的时间间隔,称为一个时钟周期,又称T状态(T周期)。时钟周期是CPU基本时间计量单位,由计算机主频决定。例:主频5MHz频率f:1秒内的脉冲个数时钟周期T:=1/f=200ns

T状态66一个基本的总线周期通常包含4个时钟周期,即4个T状态,按时间的先后顺序分别称为T1、T2、T3、T4总线周期T1T2T3T4CLK67基本的总线周期等待周期TW,在总线周期的T3和T4之间插入空闲周期TI(没有BIU工作),两个总线周期间插入68TW和TI8088的最小总线模式698088的最大总线模式70地址锁存器8282引脚信号STBDI0DI1直通保持高阻DO0DO1DO0DO1DO2DO3DO4DO5DO6DO7STBVCC82821234567891020191817161514131211DI1DI2DI3DI4DI5DI6DI7OEGNDDI0OE718282地址锁存功能STB为高电平期间,输出等于输入;为下降沿时,输出锁存,与输入无关ALE为8088/8086地址锁存允许,高电平有效,输出,复用线上出现地址时为高电平锁存器的DI0-DI7与CPU的地址/数据复用线相连,STB与ALE相连。ALE为正脉冲时,输出地址;为低电平时,输出锁存,与数据无关OE为有效电平(低电平)时,正常输出;为无效电平(

温馨提示

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

评论

0/150

提交评论