微机原理与接口技术系列笔记(二)

第二章 微处理器与总线

2.1 8086/8088微处理器的特性

  • 8086为16位CPU,8088为准16位CPU(内十六外八)
  • 8086/8088的时钟频率为5MHz
  • DB、AB总线分时复用
  • 内存容量为1MB,即共有20条地址总线
  • 基本寻址方式有八种
  • 指令系统包含99条基本汇编指令
  • 16位I/O端口地址最多可寻址64K个端口地址
  • 可处理内部软件中断(程序员自己安排好的)和外部硬件中断(随机的),中断源多达256个
  • 支持单片CPU和多片CPU系统工作

2.2 8086/8088微处理器结构及寄存器

内部结构分为执行部件EU(execution unit)和总线接口部件BIU(bus interface unit)

                        EU:负责指令的译码、执行和数据的运算

                        BIU:管理CPU和系统总线的接口;负责CPU对存储器和外设进行访问

                        **两个CPU在大多数情况下独立操作,但也可以并行执行【只要执指时不需要总线就可以并行执行,需要占用总线就无法执行】,实行指令预取

                        **8086和8088的EU完全相同,BIU略有不同,8086的指令队列是6个字节,8088的指令队列是4个字节

                        **指令队列被清空的三种情况:

                                                                        ①出错

                                                                        ②遇到转移/跳转指令

                                                                        ③中断

8086/8088寄存器组(register array)【总共14个,均为16位】

        Ⅰ通用寄存器8个

                ①数据寄存器:AX、BX、CX、DX

                                AX:累加器【accumulator】,使用频率最高,用于算术、逻辑运算以及与外设传送消息等(AL为8位累加器)

                                BX:基址寄存器【base address register】,常用来存放存储器地址【内存】

                                CX:计数器【counter】,作为循环和串操作等指令的隐含计数器

                                DX:数据寄存器【data register】,常用来存放双字长数据的高16位或者外设端口地址

**每个数据寄存器还可以分为高八位和低八位2个独立的寄存器

                ②变址寄存器:SI、DI,常用于寄存器变址寻址时提供地址

                                SI:源地址寄存器(source index)

                                DI:目的地址寄存器(destination index)

                                在串操作指令中,只能是由SI到DI

                ③指针寄存器:指针寄存器用于寻址内存堆栈内的数据

                                SP:堆栈指针寄存器(stack pointer),指示堆栈栈顶的位置

                                BP:基址指针寄存器(base pointer),表示数据在堆栈段内的基地址

                                SP和BP与SS联合使用来确定堆栈段中的存储单元地址

                        **stack是内存中一个特殊的区域,采用“先进后出”或“后进先出”的存取方式

        Ⅱ 一个指令寄存器IP(instruction pointer)

                                ①指示主存储器指令的位置

                                ②随着指令的执行,IP将自动修改以指示下一条指令所在的存储器位置

                                ③IP是一个专用寄存器

                        **IP与CS联用确定下一条指令的存储单元地址

                        **编程序时,不能直接使用IP

        Ⅲ 一个标志寄存器

                                Flag用于反映指令执行结果或控制指令执行形式

                Flag是十六位寄存器,8086/8088用了其中九位,六位记录状态,三位控制指令执行形式

                

                进位标志CF(carry flag):有进位或借位时,为1

                辅助进位标志AF(auxiliary parity flag):位3向位4有进位时,置一

                零标志ZF(zero flag):结果为0时,置一

                符号标志SF(sign flag):与结果第一位的值相同

                奇偶标志PF(parity flag):运算结果最低字节中1的个数为偶数时,置1

                溢出标志OF(overflow):若算术运算的结果有溢出,则置一

                                **溢出的快速判断方法:

                                                        ①同符号数相加才有可能发生溢出(因此异号相加不用考虑),若同号相加后,结果与加数的符号不同则溢出

                                                        ②若次高位进位和最高位进位异或为1,则溢出

                方向标志DF(direction flag):用于串操作指令,控制地址的变化方向,设置DF为一时,自减,有快捷指令CLD和STD,让DF置一或置零 

                中断允许标志IF(interrupt-enable flag):控制可屏蔽中断是否可以被处理器响应,IF为1时,允许中断;有快捷指令CLI和STI

                陷阱标志TF(trap flag):用于控制处理器进入单步操作方式,设置TF为一时,处理器单步执行指令;没有快捷指令

        Ⅳ 4个段寄存器

                CS:代码段寄存器(code segment):指明当前代码段的起始地址【与IP求和】

                DS:数据段寄存器(data segment):指明当前数据段的起始地址

                ES:附加段寄存器(extra segment):指明当前附加段的起始地址

                SS:堆栈段寄存器(stack segment):指明当前堆栈段的起始地址

**内存中从低字节到高字节依次为:ES、SS、CS、DS

 2.3 8086/8088的存储器寻址机制

**寄存器、外存储器和内存的区别:

                寄存器是CPU内部暂存数据的存储单元,如AX、BX等        

                存储器可直接与CPU进行数据交换

                外存主要指用来长久保存数据的外部存储介质。常见的有硬盘、光盘等

                **外存的数据只能通过内存间接地与CPU交换数据,即程序及其数据可以永久存放在外存中,在运行需要时才进入内存

                **多字节数据在存储器中占连续的多个字节存储单元,存放时,低字节存入低地址,高字节存入高地址,表达时,用它的低地址表示多字节数据占据的地址空间

8086/8088有20条地址总线,最大可寻址空间为1MB,物理寻址范围从00000H~FFFFFH,地址信息为20位,但内部寄存器最多只能处理16位数据,因此需要分段来进行数据存储。

 段起始地址:指明逻辑段在主存储器中的起始地址

段基地址:预设段起始地址后四位为0,即:xxxx0H;省略低四位0000B,段起始地址就可用16位数据表示,这16位数据就称为段基地址。

偏移地址(也称有效地址EA):指明存储器单元距离段起始地址的偏移量;只要每段不超过64KB,偏移地址也可用16位数据表示

逻辑地址的表示

物理地址(PA)与逻辑地址(LA)的转换

**一个物理地址可以有多个逻辑地址 

 段基地址存放在相应的段寄存器中

                代码段:用来存放程序的指令序列

                                CS:存放代码段的段基地址

                                IP:指示下条指令的偏移地址

                                **处理器利用CS:IP取得下一条要执行的指令

                数据段:数据段存放运行程序所用的数据

                                DS:存放数据段的段基地址

                                EA(SI、BX):存储器操作数的偏移地址

                                **处理器利用DS:EA存取数据段中的数据

                附加段:附加的数据段,也保存数据

                                ES:存放附加段的段基地址

                                EA(DI):存储器操作数的偏移地址

                堆栈段:堆栈段确定堆栈所在的主存区域

                                SS:存放堆栈段的段基地址

                                SP:只是堆栈栈顶的偏移地址

        **存储器各逻辑段之间可以连接、分开、部分重叠或完全重叠

段超越:

                堆栈段数据保存在堆栈所在的主存区域,一般的数据在没有指明时,默认在DS段

若数据在其他段,则需要使用段超越

2.4 8086/8088微处理器的外部结构

**我们说的有效电平是针对控制总线的

以8088为例,

一、地址/数据总线

        

(1)

        ①地址/数据分时复用(一个引脚在不同时刻具有两个甚至多个作用,分时复用是为了减少对外引脚个数

        ②数据流向是双向的,且具有三态

        ③时刻输出低地址~,其他时间用于传送8位数据

(2)

        ①提供20位地址的中间8位地址

        ②数据流向为输出,具有三态

二、地址/状态总线

        ①地址/状态分时复用

        ②数据流向为输出,且具有三态

        ③访问存储器的,访问外设的时刻全部输出低电平

        ④其他时间输出状态信号

三、地址/数据/状态时序

 

 

 2.5 总线的形成与标准

总线(bus)就是连接两个以上数字系统元器件的信息通路,是一组公用信号线

 

总线支持芯片

        ①8282——8位三态锁存器

                        锁存地址信息

        ②8284——时钟发生器

                        提供系统时钟CLK和其他系统时钟

                        同步RESET、同步READY

        ③8286——并行双向总线控制器

                        数据缓冲,增强总线负载能力

                        控制数据传送方向

        ④8288——总线控制器

                    

 

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值