微机原理与接口技术知识点总结:第二章 CPU结构和指令系统 (上)

微机原理与接口技术知识点总结:第二章 CPU结构和指令系统 (上)


一、8086/8088CPU结构

1.相同点和差异

  • 相同点
    • 寄存器:16位
    • 地址线:20位,存储空间 = 1MB
      • 8086: AD0~AD15, A16~A19
      • 8088: AD0~AD 7 , A8 ~ A19
  • 差异:
    • 数据总线:
      • 8086: 16位(16位机):AD0 ~ AD15
      • 8088: 8位(准16位机):AD0 ~ AD7
    • 指令队列(缓冲器)
      • 8086: 6字节
      • 8088:4字节

2.内部结构:EU和BIU

(1)EU(Execute Unit,执行单元)

  • EU内部构成
    • ALU:执行基本运算和处理.
    • 一组通用寄存器 + 标志寄存器
    • EU控制系统:队列和时序控制
  • EU功能:负责执行指令或运算
    • 从指令队列中取指令代码,译码,
      在ALU中完成数据的运算,结果的
      特征保存在 标志寄存器 中。

(2)BIU(Bus Interface Unit,总线接口单元)

  • BIU构成
    • 四个段寄存器+ 指令指针IP
    • 地址加法器:段地扯和偏移地址
      相加,形成20位物理地址
    • 指令队列缓冲器: 6或4字节
    • 总线控制逻辑:内外总线接口
  • BIU功能
    • 预取指令
      • 执行指令的同时预取若干条放在
        队列中
    • 控制指令执行顺序
      • 顺序取指令执行
      • 执行转移指令清除队列
        • 从新地址取指并送往EU
      • 形成内存寻址的20位地址

3.8086/8088流水线工作机制

  • 命令的执行过程
    • 取指( 取指令
      • 取数( 取操作数 )
        • 执行( 分析和执行指令
          • 写回( 写结果到存储器
  • 流水线机制的前提
    • EU和BIU可同时工作
    • 指令预取队列的存在

二、 8086/8088 CPU寄存器

1.14个基本寄存器

  • 8086寄存器组(均16位
    • 通用寄存器:8个
    • 段寄存器:4个
    • 标志寄存器:1个
    • 指令指针寄存器:1个

2.通用寄存器(8个)

  • 通用寄存器(8个,均16位
    • 数据寄存器(4个)
      • AX,BX,CX,DX
    • 变址寄存器(2个)
      • SI,DI
    • 指针寄存器(2个)
      • BP,SP

1. 数据寄存器(4个): AX,BX,CX,DX

  • 暂存运算的输入数据、输出数据和中间数据
  • 高8位 | 低8位,可独立寻址和读/写
  • 专门用途
    - AX:累加器(Accumulator):暂存运算结果及外设数据
    - BX:基址寄存器(Base address Register):存放内存地址
    - CX:计数器(Counter):循环和串操作的隐含计数器
    - DX:数据寄存器(Data Register):双字高16位或外设地址
    在这里插入图片描述

例子1:BX作为基址寄存器(存放内存地址

  • MOV [BX], 1000
    • BX中的数据是偏移地址EA(数据段内
    • 将1000送入数据段内偏移地址是(BX)的单元中

例子2:BX作为基址寄存器(存放内存地址

  • MOV AX, [BX]
    • BX中的数据是偏移地址EA(数据段内
    • 将数据段内偏移地址是(BX)的单元内容送给AX

例子3:CX作为计数器(Counter),用于循环次数计数
MOV AX, 0
MOV CX, 8
NEXT: ADD AX, 2
LOOP NEXT ; LOOP 循环指令

2. 变址寄存器(2个): SI和DI
在这里插入图片描述

  • 在内存寻址方式中用于存放地址
    • SI:源地址寄存器(Source Index)
    • DI:目的地址寄存器(Destination Index)

例:MOV AX, [SI] ; SI = 2000H
MOV BX, [DI] ; DI = 3000H

  • 专用:串操作中用SI和DI寻址(变址)

例:利用SI,DI拷贝字符串

MOV SI , 2000H
MOV DI , 3000H
MOV CX, 100H

CLD
......
REP MOVSB
在这里插入图片描述

  1. 指针寄存器:SP和BP
  • 用于寻址堆栈内的数据与SS联合使用定位栈中单元
  • SP:堆栈指针寄存器(Stack Pointer),指示栈顶位置
  • BP:基址指针寄存器(Base Pointer),定位栈中某个基址
    在这里插入图片描述
  1. 指令指针寄存器IP(Instruction Pointer)
  • 指示内存中指令的位置
  • IP是专用寄存器
  • IP与CS联合使用定位下一条指令的内存地址
    • 随着指令执行,IP自动修改为下一条指令的内存地址
    • 修改IP的其他方法:转移指令JMP 2000:0100)
  • CPU复位
    • CS = FFFFH,IP=0000H
      在这里插入图片描述
  1. 标志(Flags)寄存器
    在这里插入图片描述
  • 反映指令执行结果或控制指令执行方式
  • 多种标志形成16位寄存器(FLAGS
    • 程序状态字PSW
  • 标志分类
    • 状态标志:记录程序运行的状态信息(由指令执行自动设置
      • CF、ZF、SF、PF、OF、AF
    • 控制标志:控制处理器执行指令的方式(由程序按需设置
      • DF、IF、TF

(1)零标志ZF(Zero Flag)

  • 若运算结果为0,则ZF = 1;否则,ZF = 0
    在这里插入图片描述

符号标志SF(Sign Flag)
若运算结果最高位为1(负),则SF=1;否则,SF=0
有符号数用最高位表示数据的符号
所以,最高位就是符号标志S的状态

在这里插入图片描述


进位标志CF(Carry Flag)
若结果最高位有进位或借位,则CF=1;否则CF=0
在这里插入图片描述


溢出标志OF(Overflow Flag)
若算术运算结果有溢出,则OF=1;否则,OF=0
在这里插入图片描述


  • 溢出标志OF与进位标志CF的比较(无/有符号)
    • 进位标志CF
      • 表示无符号数运算结果是否超出范围
    • 溢出标志OF
      • 表示有符号数运算结果是否超出范围
  • 溢出标志OF与进位标志CF的比较(无/有符号,补码)
    在这里插入图片描述
    • 处理器对两个操作数进行运算时
      • 按照无符号数设置进位标志CF
      • 同时根据有符号数设置溢出标志OF
    • 应该利用哪个标志由程序员决定
      • 无符号数:进位
      • 有符号数:溢出
        在这里插入图片描述

3.标志寄存器

  • 控制标志
    • DF(Direction Flag)方向标志
      • DF=1:SI,DI地址递减;
      • DF=0:SI,DI地址递增;
      • 修改DF:CLD指令/STD指令
    • IF(Interupt Flag )中断标志
      • IF=1:允许中断
    • TF(Trap Flag)陷阱标志(跟踪标志)
      • TF=1:每条指令后引起中断(陷阱,用于单步操作)
      • TF=0:正常工作.

4.段寄存器(16位)

  • 作用:段寄存器用存放段的起始地址
  • CS(代码段):指明代码段的起始地址
  • SS(堆栈段):指明堆栈段的起始地址
  • DS(数据段):指明数据段的起始地址
  • ES(附加段):指明附加段的起始地址
  1. CS(代码段)
  • 指明代码段的起始地址
  • 代码段用来存放程序的指令序列
  • 指令指针寄存器IP指示下一条指令偏移地址
  • 处理器利用CS:IP取得下一条指令
  1. SS(堆栈段)
  • SS(堆栈段):指明堆栈段的起始地址
  • 堆栈段确定堆栈所在的主存区域
  • 堆栈指针寄存器SP指示堆栈栈顶偏移地址
  • 处理器利用SS:SP操作堆栈顶的数据
  1. DS(数据段)
  • DS(数据段):指明数据段的起始地址
  • 数据段存放运行程序所用的数据
  • 由内存寻址方式得到操作数偏移地址EA
  • 处理器利用DS:EA存取数据段中的数据
  1. ES(附加段)
  • ES(附加段):指明附加段的起始地址
  • 附加段是附加的数据段,也保存数据:
  • 由内存寻址方式得到操作数偏移地址EA
  • 处理器利用ES:EA存取附加段中的数据
  • 串操作指令附加段作为目的数存放区

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值