《电子科技大学成都学院微机原理基础知识点精华》由会员分享,可在线阅读,更多相关《电子科技大学成都学院微机原理基础知识点精华(12页珍藏版)》请在金锄头文库上搜索。
1、8086 中, BIU 负责取指、读操作数和写结果,而 EU 负责执行指令。 EU 和 BIU 之 间的通信是通过 16 位的 ALU 总线和 8 位指令队列总线来完成的EU 接收指令队列中的指令,进行指令译码、分析,形成各种控制信号,实现EU 各个部件完成规定动作的控制。运算器分为算术逻辑单元 ALU (2个16 位数据的算术运算。 2个16 位数字的逻辑运 算 16 位偏移地址 EA 的运算)和通用寄存器组:数据、地址EU 的工作过程1. 从 BIU 的指令队列中取指令字节;2. EU 控制电路进行指令译码、分析;3. 如需要,送操作数的偏移地址至 BIU ;4. 将 BIU 取来的操作数
2、送 ALU 进行运算;5. 存运算结果到通用寄存器或送至 BIU ;6. 更新标志寄存器。总线接口单元 BIU总线控制逻辑(分时传递地址信息或数据信息)指令队列缓冲器( FIFO 用于暂存指令取指令和执行指令可重叠操作)地址生成( 4 个 16 位段寄存器, 16 位指令指针寄存器 IP , 20 位地址产生器)BIU 的工作过程1. 从存储器的指定单元取出指令;2. 将指令送至指令流队列中排队或直接传送给 EU3. 把 EU 的操作结果传送到指定的存储单元或外设端口中指令队列缓冲器: FIFO 结构,指令队列至少保持有一条指令,且只要有一条指令,EU 就开始执行,指令队列只要不满, BIU
3、就会自动执行取指操作,直到填满为止。 当执行转移指令时, EU 要求 BIU 从新的地址中重新取队列中原有指令被清除,新取 得的第一条指令直接送 EU 执行,随后取得的指令填入队列。地址产生器 产生 20 位的地址输入:段寄存器中的16位段首地址(逻辑地址)从 EU中来的16位段内偏移地址OF :溢出标志(逻辑地址)输出:20位实际地址(物理地址)8086CPU 地址总线宽度20位;寄存器-16位物理地址PA=(段首地址(CS、DS、SS、ES提供)左移4位一址(IP或EU部件提供)AXAHAL累加器(数据寄存器BXBHBL基址寄存器CXCHCL计数寄存器通用寄存器组DXDHDL数据寄存器二进
4、制位)+偏移地SP堆栈指针地址指针及变址寄存器)BP基址指针SI源变址指针DI目的变址指针IP指令指针控制寄存器组FLAG标心寄存器CS代码段寄存器段寄存器组DS数据段寄存器SS堆栈段寄存器ES附加段寄存器O1. 当进行带符号的补码运算时,算术运算的结果超出了机器所能表达的带符号数的范围,就会产生溢出,OF = 1 ;否则OF = 0,表示运算结果无溢出发生。求解方法:双进位位法最高进位位二次高进位位2. 两个无符号数相加时,当最高数值位向高位数值位有进位时,即CF=1时表示有溢出;当CF=0时表示无溢出。SF:符号标志,运算结果为负时, SF=1; 否则为 0ZF :全零标志,运算结果各位都
5、为零,则 ZF=1; 否则为 0AF:辅助进位标志,作加法时 D3位向 D4 位进位,则 AF=1; 否则为 0PF:奇偶标志,操作结果的低 8位中含有偶数个 1 ,则 PF=1; 否则为 0CF :进位标志,加法时最高位产生进位或减法时高位产生借位, CF=1 ;否则为 0IF :中断允许标志,控制可屏蔽中断的标志,若IF = 1,表示允许CPU接受外部从INTR弓I线上发来的可屏蔽中断请求信号;若 IF = 0,则禁止。DF:方向标志,用于控制字符串操作指令的步进方向,当DF = 1时,字符串操作指令将从高地址到低地址的方向对字符串进行处理;若 DF = 0时,贝V相反。总线周期 CPU
6、访问一次存储器单元或 I/O 口所需的时间。总线周期全部由 BIU 来完成,所以也称为 BIU 总线周期。一个基本的总线周期至少由 4 个时钟周期组成 存储器以字节为单位存储信息。为区别不同的字节存储单元,每个单元都被指定一个唯一的编号,称为该单元的物理地址(简称PA)。地址编号从0开始,按顺序加1 ,一般用十六进制数表示。因此 PC 机的内存是以字节单元为单位对内存进行编址8086 地址线有 20 根,存储器的最大存储空间为 1MB (220),因此存储器地址范围为 00000H FFFFFH: 8086 有 20 根地址线,但寄存器内部可以表示的地址最多只能是 16 位。为了能寻址 1MB
7、 空间, 8086 对存储器进行逻辑分段,每个段最大为 64KB ,最小为 16B 。采用了段地址加偏移地址的寻址方式CS: IP,这样最大寻址范围扩大到 FFFFF,即1MB 。段基址:一个逻辑段的起始地址,形如 XXXXH 。偏移地址:段内一个存储单元到达段地址的距离(16 位)。物理地址PA :存储单元的实际地址(20位)。逻辑地址 LA :段基址和偏移地址。注意:逻辑地址是在程序指令中引用和操作的地址;而物理地址是在20 位地址总线上产生的地址进栈出栈(二 52 53 )每个I/O 端口都有一个唯一的端口地址,由于只用地址总线的低16位A15A0来寻址端口地址,所以 8086 CPU
8、可以访问的 I/O 端口地址共有 64KB ,其地址为 0000H FFFFH无操作数指令,例:等待指令 WAIT 单操作数指令,例:加 1 指令 INC AL 双操作数指令,例:减法指令 SUB AL , BL目的操作数:前者 (AL)源操作数:后者 (BL)用 BX 、SI 、DI 默认段寄存器: DS用 BP 默认段寄存器: SS寻址方式(三 12 左右)对 I/O 端口的寻址方式有端口直接寻址和端口间接寻址方式两种。访问 I/O 端口 只能使用其专用指令:IN 和 OUT 指令。端口直接寻址:当端口地址在 8 位二进制 n=00H FFH 范围时才可使用直接 寻址方式端口间接寻址:当端
9、口地址大于FFH,则只能采用间接寻址方式,必须使用间址寄存器DX,存放I/O端口的地址码CS、立即数不作目的数堆栈一一以“先进后出”原则组织起来的连续的内存空间。堆栈操作以字为单位。固定以 SS:SP为指针指示栈顶,出、入堆栈的操作均 针对栈顶单元进行。80X86的堆栈生长方向为“向下增长”入栈,指针减出栈,指针加入栈操作(三30)交换指令一一XCHG功能:将源、目的操作数的内容互相交换,指令执行后源、目的操作数同时被 改变累加器专用传送指令(1)输入/输出(I/O )指令 输入指令一一IN功能:把指定端口中的一个数据(字节或字)输入至 AL或AX。指令形式:IN累加器,端口地址IN AL ,
10、20H ;从20H 端口输入一个字节至 AL 输出指令一一OUT功能:把AL或AX中的数据输出到指定的端口。指令形式:OUT端口地址,累加器OUT 20H,AL ;将AL中一字节输出到20H端口换码指令一一XLAT功能:直接查表并读表格中元素值的指令)换码指令一一XLAT功能:直接查表并读表格中元素值的指令目标地址传送指令不是传送操作数,而是传送操作数的地址,把存储单元地址送入 指定的寄存器。(1 )有效地址送寄存器指令 LEA 源、目操作数长度必须一致。 源、目操作数不能同时是存储器操作数。 源、目操作数不能同时是段寄存器。 立即数和代码段寄存器 CS 不能作目操作数。 当目操作数是段寄存器
11、时,源操作数不能是立即数 可以使用段寄存器的指令: MOV 、PUSH 、POP。 除XCHG指令外,其它数传指令仅改变目操作数,源操作数保持不变。 除 SAHF 、POPF 指令外,其它数传指令的执行不影响标志位。不带进位加指令 ADD带进位位的加法指令 ADCADC AL , 78H; AL J AL + 78H + CfADC AX , CX ; AX J AX + CX + CfADC BX , WORD PTRDI; BX J BX DI 1DICF加1指令一一INC执行之后影响标志位 SF、ZF 、AF、PF、OF ,但不影响 CFBCD例:将分别存放在 34000H 、34200
12、H 处的两个 4 位组合 BCD 码相加,组合码的结果放在 34200H 处。MOVAX,3400HMOVDS,AX;设置默认段寄存器值MOVSI ,0 ;使 SI 指向 34000H 单元MOVDI , 0200H ;使 DI 指向 34200H 单元MOVAL,SIADDAL ,DI ;低 2 位组合 BCD 码相加DAA;调整得组合 BCD 码,仍在 AL 中MOV DI , AL ;组合 BCD 码结果(低 2 位)存入 34200H 处MOV AL ,SI+1ADC AL, DI+1;高 2 位组合 BCD 码相加DAAMOV DI+1 , AL ;组合 BCD 码结果(高 2 位)
13、存入 34201H 处MOV DI+2 , 0ADC DI+2 ,0 ;高位的进位存入 34202H 处 不带借位减法指令 SUB 带借位的减法指令 SBB 比较指令 CMP 形式: CMP dst , src判断条件:1. 无符号数比较大小:CF=O , dst src ; CF=1 , dst v src。2. 两个正数比较大小:SF=0 , dst src ; SF=1 , dst v src。3. 两个带符号数比较大小:OF SF=0 , dstsrc ; OF SF=1 , dstsrc无论两个有符号数还是无符号数比较是否相等: ZF=1 , dst=src 求补指令 NEG形式:N
14、EG dst ;dst 0 -dst 无符号数乘法指令: MUL 通用寄存器或存储器带符号数乘法指令: IMUL 通用寄存器或存储器无符号数除法指令: DIV 通用寄存器或存储器带符号数除法指令: IDIV 通用寄存器或存储器小结: 加、减法的运算结果与两个操作数的长度相等,进、借位反映在标志位上。 乘、除法运算仅由指令指定一个操作数,另一个操作数固定为累加器。 除了除法和符号扩展指令外,其它算术运算指令均影响状态标志,不同指令对 标志位的影响也各不相同。 允许使用 BCD 码进行算术运算。为了得到正确的 BCD 码运算结果,应使用相 应的十进制调整指令。 所有的十进制调整均对累加器进行。加、减、乘法的调整在运算之后进行,只有 除法必须先调整,后运算布尔型指令(1 )与、或、非、异或 AND 、OR、NOT 、XOR执行之后影响所有状态标志 SF、ZF、 AF、PF、CF、OF例 1. 把标志寄存器 FLAGS 中符号标志位 SF 置 1 ;2. 将标志寄存器 FLAGS 中跟踪标志位 TF 置 1 ;3. 将标志寄存器 FLAGS 中溢出位 OF 变反。1. LAHF2. PUSHFOR AH, 80HPOP AXSA