0
点赞
收藏
分享

微信扫一扫

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

code_balance 2022-03-30 阅读 49
数据结构

第二章 微处理器与总线

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

举报

相关推荐

0 条评论