《CPU指令系统 2.pdf》由会员分享,可在线阅读,更多相关《CPU指令系统 2.pdf(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 4 单元 8086 微处理器指令系统简介(80X86 微处理器 ) 2.4 8086微处理器指令系统简介 8086的汇编级指令有 115 条,可以分为数据传送指令、算术运算指令、位处理指令字符串指令、程序转移指令以及处理器控制指令等6 大类, 下面作一简要的介绍。 2.4.1 数据传送指令数据传送指令有 14 条,可以分为 4 组,如表 2-9 所示。表 2-9 数据传送指令通用数据传送指令地址目标传送指令MOVPUSHPOPXCHGXLAT传送字节或字字进栈字出栈交换字节或字字节转换LEALDS LES装入有效地址将指针变量装入寄存器及将指针变量装入寄存器I/O 指令标志传送指令IN O
2、UT输入字节或字输出字节或字LAHF SAHF PUSHF POPF标志寄存器低字节送AAH 值送标志寄存器低字标志寄存器内容进栈标志寄存器内容出栈 1注意点(1)在数据传送指令中要注意:立即数只能作为源操作数;无存储器之间直接传送与交换的指令;不能用传送指令给CS和 IP 置新指值;没有用立即数对段寄存器直接置值的指令。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 42 页 - - - - - - - - - (2)除 SAHF 和 POPF 指令外,传送指令皆不影响
3、标志寄存器的值。(3)除 XCHG 、XLAT指令外,皆不破坏源操作数。(4)XCHG 指令不能用段寄存器作为操作数。(5)栈操作指令 PUSH 和 POP 必须以字为操作数。 2.几条指令的说明(1)指令 MOV AL,VAR1 。若 VAR1 为已定义的变量,则VAR1在指令中表示以 VAR1为地址的内存单元的内容,该指令是把内存单元的一个字节传送到AL。(2)指令 XLAT 。其功能为 AL (BX )+(AL) 即以 BX值加上 AL值作为地址,取出该地址对应的内存内容送AL。该指令通常用于表格检索中,源操作数中 BX内放表的首地址, AL中存放变址值,( BX )+(AL)为新地址,
4、目的操作数 AL注明为字节操作。在使用该指令前,必须先对AL和 BX赋值。(3)指令 LEA REG ,SRC 。要求源操作数 SRC 是一个可以计算出有效地址EA的地址表达式, 该指令所传送的是变量的地址(有效地址) ,而不是变量所表示的内存之值。(4)指令 LES REG ,SRC 。REG 为一个 16 位寄存器,这是一条16位传送指令。其功能为 REG SRC,ES SRC+2 而指令 LDS REG ,SRC 的第二个目的操作数在DS 。(5)输入 / 输出指令。 IN AL,PORT AL PORT IN AX,FORT AX PORT+1 :PORT IN AL,DX ALPOR
5、TDX INAX, DX AXPORTDX+1 :PORTDX PORT 为 8位端口地址,PORTDX 表示 DX中存放 16位端口地址。PORT+1 : PORT表示一个 16 位数据,其高 8 位由 PORT+1 端口提供;其低 8 位由 PORT 端口提供。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 42 页 - - - - - - - - - 2.4.2 算术运算指令算术运算指令有 20 条,可以分为 4 组,如表 2-10 所示。表 2-10 算术运算指令
6、加法指令减法指令ADDADC INC AAA DAA加法带进位的加法增量加法的 ASCII 修正加法的十进制修正SUB SBB DEC NEG CMP AAS DAS减法带错位的减法减量求补比较减法的 ASCII 修正减法的十进制修正I/O 指令除法指令IN OUT输入字节或字输出字节或字DIV IDIV AAD CBW CWD无符号数除法整数除法除法的 ASCII 修正字节转换为字字转换为双字 1.数据类型 8086的算术运算可以处理4 种类型的数:无符号二进制数、带符号二进制数、压缩的BCD码(十进制数)和非压缩的 BCD 码(十进制数),如表2-11 所示。表 2-11 8位数在算术运算
7、中的含义HEX 十六进制位组合格式无符号二进制数带符号二进制数压缩的 BCD 码非07 89 C500000111 10001001 110001017 137 197+7 -119 -597 89 无效 2.注意点(1)加减运算指令 ADD 、ADC 、SUB 、SBB和 CMP 可用立即数作为一个源操作数。(2)除 CBW 和 CWD 两条指令外,其余算术运算指令皆影响标志位。(3)增量指令 INC及减量指令 DEC 不影响标志 CF 。(4)乘法指令 MUL 及 IMUL是执行源操作数和累加器值 (AX或 AL)的和乘,若源操作数是一个字节,则累加器为AL,相乘结果需用双字节表示时,存放
8、在AX中;若源操作数是一个字,则累加器为AX ,相乘结果需用双字表示时,存放在 DX :AX中,DX中存放高位字, AX中存放低位字。 此时,将使标志位 CF=OF=l ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 42 页 - - - - - - - - - 否则, CF=OF=0 。其余标志都不确定。(5)除法指令 DIV 和 IDIV 的操作过程为: AX 源操作数(字节) AH 为余数, AL 为商; DX:AX/ 源操作数(字) DX为余数, AX 为商。除
9、法指令运算结果6 个状态标志皆不确定。(6)算术运算指令中是字节运算还是字运算由出现在操作数表达式中变量名的类型属性决定,或由寄存器操作数的字长决定。(7)加法和减法指令中操作数是带符号数还是无发好数有程序员解释。(8) 十进制修正指令 DAA及 DAS中无操作数出现, 但其隐含的操作数是AL,切源和目的操作数都是AL。二进制运算后 AL的内容以及 CF和 AF的状态是十进制修正的依据, 因此在 BCD 码的加减运算中, 应在二进制加法或减法指令后紧跟一条 DAA或 DAS指令。(9)当非压缩的 BCD码进行算术运算时, 低半字节为 8888B 1001B ,高半字节为 0000B ,对于除法
10、运算,被除数应在AX中,切 AH 、AL都是一字节的非压缩 BCD 码。(10)ASCII 修正指令 AAA 、AAS以及 AAM 用于二进制加法、减法及乘法指令之后,而 AAD指令用于二进制除法指令之前, 即用 AAD 指令对被除数先行修正。 2.4.3 位处理指令位处理指令有 13 条,可以分为 3 组,如表 2-12 所示:表 2-12 位处理指令逻辑运算指令移位指令循环移位指令AND OR NOT XOR TEST逻辑“与”逻辑“或”逻辑“非”逻辑“异或”测试SHL SAL SHR SAR逻辑左移算术左移逻辑右移算术右移ROL ROR RCL RCR循环左移循环右移通过 CF 循环左移
11、通过 CF 循环右移 1.指令功能简介(1)逻辑“与”指令AND 用来清除或保留目的操作数中某些位,欲清除的位同“0”相“与”,称为“屏蔽”;欲保留的位同“1”相“与”;自身相“与”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 42 页 - - - - - - - - - 其值不变,但 CF清零。(2)逻辑“或”指令 OR用来进行数的组合,同“ 0”相“或”,其值不变;同“1”相“或”,则置“ 1”;自身相“或”,其值不变,但CF清零。(3)逻辑“异或”指令 XOR 可
12、用来将目的操作数中某些位取反或保持不变。同“0”相“异或”,其值不变; 同“1”相“异或”,其值取反; 自身相“异或”,则清零。且 CF也清零。(4)测试指令 TEST用来测试目的操作数中某一位是否为“1”,实际上执行逻辑“与”操作,但结果不回送,只是根据结果修改标志寄存器。(5)算术右移指令SAR执行后符号位保持不变,右移1 次完成带符号数除 2 朝小取整操作。 2注意点(1)位处理指令的操作数可以是字节,也可以是字。(2)求反指令 NOT 的操作数不能是立即数,其它逻辑指令只有源操作数可以是立即数。(3)求反指令 NOT 不影响任何标志位,其余逻辑指令使CF=OF=0 ,AF不确定, SF
13、 、ZF、PF由运算结果定。(4)循环移位指令和移位指令中的操作数COUNT 只能为 1 或 CL;目的操作数不能为立即数(当移位次数为1 时,COUNT=1,否则 COUNT=CL)。(5)移位指令和循环移位指令影响CF ,移位指令还影响PF 、SF和 ZF,当移位计数值为 1 时 OF有意义。 2.4.4 程序转移指令程序转移指令有28 条,可以分为 4 组如表 2-13 所示。表 2-13 程序转移指令无条件转移指令CA LL调用过程RET从过程返回JMP转移名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
14、 - - - - - - 第 5 页,共 42 页 - - - - - - - - - 条件转移指令JA/JNBE高于 /不低于等于,转移JAE/JNB高于或等于 /不低于,转移JB/JNAE低于 /不高于等于,转移JBE/JNA低于或等于 /不高于,转移JC有进位(错位),转移JE/JZ等于 /为零,转移JG/JNLE大于 /不小于等于,转移JGE/JNL大于或等于 /不小于,转移JL/JNGE小于 /不大于等于,转移JLE/JNG小于或等于 /不大于,转移JNC无进位(借位),转移JNE/JNZ不等于 /不为零,转移JNO不溢出,转移JNP/JPOPF 为“ 0”/奇状态,转移JNSSF
15、为“ 0”,转移JO溢出,转移JP/JPEPF 为“ 1”/偶状态,转移JSSF 为“ 1”,转移重复控制指令LOOP 循环LOOPE/LOOPZ等于 /为零,循环LOOPNE/LOOPNZ不等于 /不为零,循环JCXZ寄存器 CX=0 ,则转移中断指令INT中断NITO溢出中断IRET中断返回条件转移指令共有30 条,这些指令根据执行指令时CPU 标志寄存器的状态决定是否控制程序转移, 每条指令的测试条件如表2-14 所示若满足条件,则将控制转移到指令所规定的目标;若条件不满足, 则继续顺序执行。 所有的条件转移指令都是段内转移, 且是短距离的, 即目标必须在当前指令段内,且与下一条指令的第
16、一个字节的距离在-128+127个字节内。表 2-14 条件转移指令的说明助 记 符测 试 条 件单JAE/JNBCF=0JB/JNAECF=1名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 42 页 - - - - - - - - - 标志位JCCF=1JNCCF=0JE/JZZF=1JNE/JNZZF=0JNOOF=0JOOF=1JNP/JPOPF=0JP/JPEPF=1JNSSF=0JSSF=1多带标符志号位数JGE/JNL(SF 十 OF)=0JL/JNEG(SF
17、 十 OF)=1JG/JNLE((SF 十 OF)+ZF)=0JLE/JNG((SF 十 OF)+ZF)=1多标志位不带符号数JA/JNBE(CF+ZF)=0JBE/JNA(CF+ZF)=1 2无条件转移指令(1)JMP指令。JMP指令无条件地将控制转移到目标单元,该指令中只有一个操作数,用来指定程序应在哪里继续下去。可以实现“段内转移”(包括短转移和长转移) 以及“段间转移”; 而目的操作数的地址可以从指令本身获得( “直接转移”) , 也可以从指令所规定的存储器或寄存器中获得( “间接转移”) 。(2)CALL指令 O CAL指令用来调用一个“过程”(子程序),其格式与 JMP指令相似,
18、该指令与 JMP指令的区别是: 执行该指令时, 必需有一个保存断点的过程,即将CALI 一指令的下一条指令的偏移地址(若为段间调用,还需加上 CS值)保存进栈,以供返回之用。(3)RET指令。RET指令的功能是控制从一个过程返回到调用该过程的CALL指令之后的那条指令,即返回断点。 3重复控制指令重复控制指令可以用来管理软件循环的重复过程,这些指令都用CX寄存器作为计数器,先判CX-1是否为零,不为零转移到目标地址,其目标地址都是相对于该指令本身而言,其间距离只能在-128+127字节范围,即它们都是短距离转移指令。 4中断指令中断指令用来允许程序和外部硬设备启动中断服务程序,若中断是由软名师
19、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 42 页 - - - - - - - - - 件及不可屏蔽中断产生,则微处理器不执行中断响应周期。 2.4.5 字符串指令字符串指令有 10 条,如表 2-15 所示。表 2-15 字符串指令助记符功能REP重复REPE/REPZ等于 /为零时重复REPNE/REPNZ不等于 /不为零时重复MOVS (MOVSB ,MOVSW )串传送(字节 /字)CMPS( CMPSB, CMPSW)串比较(字节 /字)SCAS(SCASB,
20、 SCASW )串扫描(字节 /字)LODS ( LODSB , LODSW )取出串(字节 /字)STOS(STOSB,STOSW )存入串(字节 /字) 1字符串指令的共性介绍在字符串指令中一般有两个操作数源操作数和目的操作数,还可使用重复前缀 REP等以及重复次数计数器。 在字符串操作中, 寄存器和标志的用途如表 2-16 所示。表 2-16 字符串指令中寄存器和标志的用法寄存器 /标志用途SI源字符串的变址值(偏移量)DI目的字符串的变址值(偏移量)CX重复次数计数器AL/AX扫描值LODS 指令的目的操作数STOS 指令的源操作数DF=0,SI, DI 自动增量=1,SI, DI 自
21、动减量ZF扫描 /比较结束符 2重复前缀重复前缀 REP 、REPZ REPE 和 REPNZ/REPNE用来控制其后字符串指令是否重复执行, 重复前缀不影响标志。 重复的字符串处理过程可被中断,微处理器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 42 页 - - - - - - - - - 将在处理宇符串的下一个元素之前识别中断。系统的中断处理不受影响, 在从中断返回以后,重复过程再从中断处继续执行下去。当执行 REP MOVSB指令时,若 CX 0 执行 MOVS
22、B,然后 CX-1,再判 CX是否为零,若不为零,重复执行MOVSB,直至 CX=0 ,结束串操作。 2.4.6 处理器控制指令处理器控制指令有12 条,可分为 3 组,如表 2-17 所示。表 2-17 处理器控制指令标志操作指令外同步指令STC进位标志置1HLT暂停直至中断或复位CLC进位标志置0WAIT等待 TEST 信号有效CMC进位标志取反ESC交权给外部处理机STD方向标志置1LOCK在下一条指令期间封锁总线CLD方向标志置0空操作指令STI中断允许标志置1NOP空操作CLI中断允许标志置0第 3 单元 8086 微处理器的总线时序(80X86 微处理器 ) 2.3 8086微处理
23、器的总线时序在微机系统的设计中了解总线上有关信号的时间关系是很重要的,这就是本节所要讨论的总线操作的时序问题。 2.3.l 指令周期、总线周期和时钟周期每条指令的执行由取指令、 译码和执行等操作组成, 执行一条指令所需要的时间称为指令周期( Instruct。Cycle ),不同指令的指令周期是不等长的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 42 页 - - - - - - - - - 8086CPU 与外部交换信息总是通过总线进行的。CPU 的每一个这种信息输
24、入、输出过程所需要的时间称为总线周期(Bus Cycle ),每当 CPU要从存储器或输入输出端口存取一个字节或字就需要一个总线周期。一个指令周期由一个或若干个总线周期组成。而执行指令的一系列操作都是在时钟脉冲CLK的统一控制下一步一步进行的,时钟脉冲的重复周期称为时钟周期(Clock Cyce ),时钟周期是CPU 的时间基准,由计算机的主频决定,例如,8086的主频为 5MHz ,则 1个时钟为 200us。 8086CPU 的总线周期至少由 4 个时钟周期组成,分别以T1、T2、T3和T4表示,如图 2-14 所示, T 又称为状态( State )。一个总线周期完成一次数据传输, 至少
25、要有传送地址和传送数据两个过程。在第一个时钟周期 T1期间由 CPU 输出地址,在随后的三个T 周期(T2、T3和 T4)用以传送数据。换图 2-14 8086CUP 的总线周期言之,数据传送必须在T2T4 这三个周期内完成, 否则在 T4 周期后,总线将作另一次操作,开始下一个总线周期。在实际应用中,当一些慢速设备在三个T周期内无法完成数据读写时,那么在 T4后,总线就不能为它们所用,会造成系统读写出错。为此,在总线周期中允许插入等待周期Tw 当被选中进行数据读写的存储器或外设无法在三个周期内完成数据读写时, 就由其发出一个请求延长总线周期的信号到 8086CUP 的 READY 引脚,80
26、86CUP 收到该请求后;就在T3与 T4之间插入一个等待周期 Tw ,加入 Tw的个数与外部请求信号的持续时间长短有关,延长的时间 Tw也以时钟周期 T 为单位,在 Tw期间,总线上的状态一直保持不变。如果在一个总线周期后不立即执行下一个总线周期,即总线上无数据传输操作,西欧头脑感总线处于空闲状态,此时执行空闲周期Ti ,Ti 也以时钟周期 T 为单位,两个总线周期之间插入几个Ti 与 8086CPU 执行的指令有关,例如在执行一条乘法指令时,需用 124个时钟周期, 而其中可能使用总线的时间极少,而且预取队列的充填也不用太多的时间,加入的Ti 可能达到 100 多个。在空闲周期期间, 20
27、 条双重总线的高 4 位 A19/S6A16/S3 上,8086CPU 会在总线的低 16位 AD15 AD0上继续驱动数据信息D15 D0 ; 如果前一个总线周期为读周期,则在空闲周期中,总线的低16 位 D15 D0处于高阻状态。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 42 页 - - - - - - - - - 2.3.2 几种基本时序 8086CPU 的操作是在指令译码器输出的电位和外面输入的时钟信号联合作用下产生的各个命令控制下进行的,可分为内操作与外
28、操作两种, 内操作是控制 ALU (算术逻辑单元)进行算术运算,控制寄存器组进行寄存器选择以及送往数据线还是地址线, 进行读操作还是写操作等, 所有这些操作都在CPU 内部进行,用户可以不必关心。CPU 的外部操作是系统对CPU 的控制或是 CPU 对系统的控制,用户必须了解这些控制信号以便正确使用。 8086CPU 的外部操作主要有如下几种:(1)存储器读或写;( 2)I/O端口读或写;( 3)中断响应;( 4)总线保持(最小方式);(5)总线请求/ 允许(最大方式);( 6)复位和启动;( 7)暂停。 1.总线读操作当 8086CPU 进行存储器或 I/O 端口读造作时, 总线进入读周期,
29、 8086 的读周期时序如图 2-15 所示。图 2-15 8086 读周期时序基本的读周期由 4 个 T周期组成 T1、T2、T3和 T4。当所选中的存储器和外设的存取速度较慢时, 则在 T3和 T4之间将插入 1 个或几个等待周期 Tw 。在 8086 读周期内,有关总线信号的变化如下:(1)M/IO:在整个读周期保持有效, 当进行存储器读操作时, M/IO为高电平;当进行 I/O 端口读操作时, M/IO 为低电平。(2)A19/S6A16/S3:在 T1期间,输出 CPU 要读取的存储单元或I/O 端口的地址高 4 位。 T2T4 期间输出状态信息S6S3。(3)BHE/S7 :在 T
30、1期间,输出 BHE有效信号( BHE 为低电平),表示高 8 位数据总线上的信息可以使用, 可在信号通常作为奇地址存储体的体选信号(偶地址存储体的体选信号是最低地址位AO )。T2T4期间输出高电平。(4)AD15 AD0 :在 T1期间,输出 CPU要读取的存储单元或I/O端口的地址 A15AO 。T2 期间为高阻态, T3T4期间,存储单元或I/O 端名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 42 页 - - - - - - - - - 口将数据送上数据总线
31、。 CPU 从出 AD15 AD0上接收数据。(5)ALE :在 T1期间地址锁存有效信号为一正脉冲,系统中的地址锁存器正是利用该正脉冲的下降沿来锁存A19/S6A16/S3, AD15 AD0中的 20 位地址信息以及 BHE 。(6)RD :在 T2期间输出低电平送到被选中的存储器或I/O 接口,注意,只有被地址信号选中的存储单元或I/O 端口,才会被 RD信号从中读出数据(数据送上数据总线AD15 AD0 )。(7)DT/R :在整个总线周期内保持低电平,表示本总线周期为读周期,在接有数据总线收发器的系统中,用来控制数据传输方向。(8)DEN :在 T2T3期间输出有效低电平,表示数据有
32、效,在接有数据总线收发器的系统中,用来实现数据的选通。 2总线写操作当 8086CPU 进行存储器或 I/O 端口写操作时,总线进入写周期,8086的写周期时序如图 2-16 8086写周期时序总线写操作的时序与读操作时序相似,其不同处在于:(1)AD15 AD0 :在 T2T4期间送上欲输出的数据,而无高阻态。(2)WR :从 T2T4,WR 引脚输出有效低电平,该信号送到被选中的存储器和 I O接口,注意,只有被地址信号选中的存储单元或I/O 端口才会被 WR 信号写入数据。(3)DT/R :在整个总线周期内保持高电平、表示本总线周期为写周期,在接有数据总线收发器的系统中,用来控制数据传输
33、方向。 3.中断响应操作当 8086CPU 的 INTR引脚上有一有效电平(高电平),且标志寄存器中 IF=l ,则 8086CPU 在执行完当前的指令后,响应中断。在响应中断时名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 42 页 - - - - - - - - - CPU 执行两个中断响应周期,如图2-17 所示。图 2-17 中断响应周期时序每个中断响应周期由4 个 T 周期组成。在第一个中断响应周期中,从 T2T4周期, INTA为有效(低电平),作为对中断请
34、求设备的响应;在第二个中断响应周期中,同样从T2T4周期, INTA为有效(低电平),该输出信号同志中断请求设备(通常是通过中断控制器),把中断类型号(决定中断服务程序的入口地址)送到数据总线的低8 位 AD7 AD0 (在 T2T4期间)。在两个中断响应周期之间,有3 个空闲周期( Ti )。 4总线保持与响应当系统中有其它的总线主设备请求总线时,向 8086CPU 发出请求信号 HOLD ,CPU 接收到 HOLD 有效的信号后,在当前总线周期的T4,或下一个总线周期的 T1 的后沿,输出保持响应信号HLDA , 紧接着从下一个时钟开始,8086CPU 就让出总线控制权。当外设的DMA 传
35、送结束时,使 HOLD 信号变低,则在下一个时钟的下降沿使HLDA 信号变为无效(低电平)。 8086 的总线保持/ 响应时序见图 2-18。图 2-18 总线保持 / 响应时序 5系统复位 8086CPU 的 RESET 引脚,可以用来启动或再启动系统,当8086在RESET 引脚上检测到一个脉冲的上跳沿时,它停止正在进行的所有操作,处于初始化状态,直到RESET 信号变低。复位时序如图2-19 所示。图 2-19 复位时序图中 RESET 输入是引脚信号, CPU 内部是用时钟脉冲CLK来同步外部的复位信号的, 所以内部 RESET 是在外部引脚 RESET 信号有效后的时钟上升沿有效的。
36、复位时, 8086CPU 将使总线处于如下状态:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 42 页 - - - - - - - - - 地址线浮空 (高阻态) 直到 8086CPU 脱离复位状态, 开始从 FFFF0H单元取指令; ALE 、HLDA 信号变为无效(低电平);其它控制信号线,先变高一段时间(相应于时钟脉冲低电平的宽度),然后浮空。另外,复位时 CPU 内寄存器状态为:(1)标志寄存器、指令指针(IP)、DS 、SS 、ES清零;(2)CS置 FFF
37、FH ;(3)指令队列变空。以上讨论的都是最小方式下的时序第 2 单元 8086 微处理器的引脚功能(80X86 微处理器 ) 2.2 8086 微处理器的引脚功能 S3特性(所使用的段寄存器)LLHHLHLHESSSCS(或者不是存储器操作)DS注: L-低电平, H-高电平(4)8086 的 20 条地址线访问存储器时可寻址1M字节内存单元;访问外部设备时,只用 16 条地址线 A15A0可寻址 64K个 I/O 端口。(5)BHE/S7总线高允许 / 状态 S7信号(输出三态)。这也是分时复用的双重总线。在总线周期开始的T1周期,作为总线高半部分允许信号,低电平有效。当 BHE为低电平时
38、,把读 / 写的 8 位数据与 AD15AD8连通。该信号与 A0(地址信号最低位) 结合以决定数据字是高字节工作还是低字节工作。在总线周期的其他 T 周期,该引脚输出状态信号S7。在 DMA 方式下,该引脚为高阻态。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 42 页 - - - - - - - - - 2控制总线控制总线是传送控制信号的一组信号线。有些是输出线,用来传输CPU送到其它部件的控制命令(如读、写命令、中断响应等);有的是输入线,由外部向 CPU输入控
39、制及请求信号(复位、中断请求等)。 8086的控制总线中有一条MN/MX (33#引脚)线,即最小最大方式控制线,用来控制 8086 的工作方式。当 MN/MX 接+5V时,8086处于最小方式,由8086提供系统所需的全部控制信号,用来构成一个小型的单处理机系统。当MNMX 接地时, 8086处于最大方式,系统的总线控制信号由专用的总线控制器8288提供, 8086把指示当前操作的状态信号(S2、S1、S0 )送给 8288,8288 据此产生相应的系统控制信号。最大方式用于多处理机和协处理机结构中。在 8086的控制总线中,有一部分总线的功能与工作方式无关;而另一部分总线的功能随工作方式不
40、同而不同 (即一条信号线有两种功能。 现分述如下。(1)受 MN/MX 影响的信号线(最大方式信号)。S2、S1、S0总线周期状态信号(三态、输出)。表示8086 外部总线周期的操作类型,送到系统中的总线控制器8288,8288 根据这三个状态信号,产生存储器读写命令。 I/O 端口读写命令以及中断响应信号,S2、S1和 S0的编码表如表 2-5 所示。表 2-5 S2、S1、S0编码表S2S1S0操作类型( CPU 周期)LLLLHHHHLLHHLLHHLHLHLHLH中断响应读 I/O 端口写 I/O 端口暂停取指读存储器(数据)写存储器无效(无总线周期)在总线周期的 T4时钟周期期间,
41、S2、S1和 S0的任何变化, 指示一个总线周期的开始,而在 T3 期间(或 Tw 等待周期期间)返回无效状态,表示一个总线周期的结束。在DMA (直接存储器存取)方式下,S2、S1、S0处于高阻状态。在最小方式下, S2、S1、S0三引脚分别为 M/IO、DT/R和 DEN 。 M/IO为存储器 IO 控制信号(输出、三态),用于区分CPU 是访问存储器( M IO=H),还是访问 I/O 端口( M/IO=L)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 42
42、页 - - - - - - - - - DT/R为数据发送 / 接收信号(输出、三态),用于指示CPU 是进行写操作(DT/R=H )还是读操作( DT/R=L )。 DEN为数据允许信号 (输出、三态),在 CPU 访问存储器或 I O端口的总线周期的后一段时间内, 该信号有效。用作系统中总线收发器的允许控制信号。RQ/GT0、RQ/GT1请求 / 允许总线访问控制信号(双向)。这两条信号线是为多处理机应用而设计的,用于对总线控制权的请求和应答,其特点是请求和允许功能由一根信号线来实现。总线访问的请求允许时序分为三个阶段请求、允许和释放; 如图2-8 所示。首先是协处理器向8086 输出 R
43、Q请求使用总线,然后在CPU (8086)的 T4或下一个总线周期的T1期间,CPU 输出一个宽度为一个时钟周期的脉冲信号GT给请求总线的协处理器,作为总线响应信号,从下一个时钟周期开始,CPU释放总线。当协处理器使用总线结束时, 再给出一个宽度为一个时针周期的脉冲信号 RQ给 CPU ,表示总线使用结束,从下一个时钟周期开始,CPU 又控制总线。图 2-8 请求/ 允许时序两条控制线可以同时接两个协处理器,规定RQ/GT0 的优先级高。在最小方式下, RQ/GT0 和 RQ/GT1 二引脚分别为 HOLD 和 HLDA 。 HOLD 为保持请求信号 (输入),当外部逻辑把 HOLD 引脚置为
44、高电平时,8086在完成当前总线周期以后进入HOLD (保持)状态,让出总线控制权。 HLDA 为保持响应信号(输出);这是CPU 对 HOLD 信号的响应信号,它对 HOLD 信号做出响应,使 HLDA 输出 H电平。当 HLDA 信号有效时, 8086 的三态信号线全部处于三态(高阻态)。使外部逻辑可以控制总线。QS1,QS0指令队列状态信号(输出)。用于指示8086内部 BIU 中指令队列的状态,以便外部协处理器进行跟踪,QS1,QS0的编码状态如表 2-6 所示。QS1QS0LL空操作,在最后一个时钟周期内,从队列中不取任何代码LH在第一个字节,从队列中取出的字节是指令的第一个字节HL
45、队列空,由于执行传送指令,队列已重新初始化HH后续字节,从队列中取出的字节是指令的后续字节 INTA为中断响应信号(输出、三态),当8086CPU 响应来自 INTR引脚名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 42 页 - - - - - - - - - 的可屏蔽中断请求时,在中断响应周期内,INTA变为低电平。LOCK 总线优先权锁定信号(输出、三态)。该信号用来封锁外部处理器的总线请求,当LOCK 输出低电平时,外部处理器不能控制总线,LOCK 信号有效由指
46、令在程序中设置,若一条指令前加上前缀指令LOCK ,则 8086 在执行该指令期间, LOCK 线输出低电平,并保持到指令执行结束,以防止在这条指令执行过程中被外部处理器的总线请求所打断。在保持响应期间, LOCK 线为高阻态。在最小方式下, LOCK 引脚为 WR 信号。 WR 为写控制信号 (输出、三态),当 8086CPU 对存储器或 I/O 端口进行写操作时, WR 为低电平。(2)不受 MN/MX 影响的控制总线(公共总线)。下面这些控制信号是不受工作方式影响的公共总线。RD 读控制信号 (三态,输出)。RD信号为低电平时, 表示 8086CPU执行读操作。在 DMA 方式时 RD处
47、于高阻态。READY 等待状态控制信号,又称准备就绪信号(输入)。当被访问的部件无法在 8086CPU 规定的时间内完成数据传送时,应由该部件向 8086CPU发出 READY=L(低电平),使 8086CPU 处于等待状态,插入一个或几个等待周期Tw , 当被访问的部件可以完成数据传输时, 被访问的部件将使READY=H(高电平),8086CPU 继续运行。INTR 中断请求信号(输入)。可屏蔽中断请求信号,电平触发信号。在每条指令的最后一个时钟周期时,8086CPU 将采样该引脚信号,若INTR为高电平,同时 8086CPU 的 IF (中断允许标志)为“ 1”,则 8086CPU 将执行
48、一个中断响应时序,并且把控制转移到相应的中断服务程序。如果IF=“0”,则8086不响应该中断请求,继续执行下一条指令。INTR信号可由软件复位CPU 内部的 IF 位而加以屏蔽。NMI 不可屏蔽中断请求信号(输入)。上升沿触发信号,不能用软件加以屏蔽。当 NMI从低电平变为高电平时,该信号有效,8086CPU 在完成当前指令后,把控制转移到不可屏蔽中断服务程序。TEST 等待测试控制信号 (输入) 。 在 WAIT(等待) 指令期间,8086CPU每隔 5 个时钟周期对 TEST引脚采样, 若 TEST为高电平,则 8086CPU 循环于等待状态,若 TEST为低电平, 8086CPU 脱离
49、等待状态,继续执行后续指令。RESET 复位信号(输入)。当RESET 为高电平时,系统处于复位名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 42 页 - - - - - - - - - 状态,8086CPU 停止正在运行的操作, 把内部的标志寄存器FR 、段寄存器、 指令指针 IP 以及指令队列复位到初始化状态。注意,代码段寄存器 CS的初始化状态为 FFFFH 。 3.其它信号(1)CLK 时钟信号(输入)。该信号为8086CPU 提供基本的定时脉冲,其占空比为
50、1:3(高电平持续时间“重复周期=1:3),以提供最佳的内部定时。(2)Vcc电源(输入)。要求接上正电压(+5V10% )。(3)GND 地线。两条接地线。 2.2.2 8088的引脚与 8086的不同之处 8088微处理器是一种准16 位机,其内部结构基本上与8086 相同,其引脚信号也与 8086 基本相同,只是如下引脚的功能有所不同。(1)8088 的地址数据复用线为8 条,即 AD7AD0,而 A15A8为单一的地址线;(2)8088 中无 BHE/S7信号,该引脚为SS0状态信号线。该引脚在最大方式下保持高电平, 在最小方式下等效于最大方式下S0的作用,SS0与 IO/M,DT/R