微机原理

微机原理

标签(空格分隔): 计算机基础


  • 微机原理
    • 第7章 输入输出与中断
    • 第四章 8086指令系统

第7章. 输入/输出与中断


  • 把介于主机和外设之间的一种缓冲电路称为I/O接口电路,简称I/O接口
  • 主机与I/O设备之间交换信息有:
    1. 数据信息
      • 数字量(计算机可以直接发送,接受 和处理的数据。以二进制形式表示的数或ASCII码表示的数符)
      • 模拟量(通过传感器采集到的现场数据, 经过A/D转换后才能输入计算机)
      • 开关量(经过相应的电平转换才能与计算机连接,以为二进制数)
    2. 状态信息(反映了当前设备的工作状态)
    3. 控制信息(CPU通过接口与外设交换信息是,只能通过IN, OUT指令来传送数据)
  • 每个接口电路中都包含一组寄存器,称为I/O端口(port),用来保存CPU和外设之间传送的数据分为:
    1. 数据端口(双向)
    2. 状态端口(输出)
    3. 控制端口(输入)
  • 每个端口都有一个地址(端口地址)
  • I/O端口的编址方式有:
    1. I/O端口与内存单元统一编址(所有访问内存的指令都可以访问I/O端口)(先是存储器,然后是I/O端口)
    2. I/O端口与内存单元独立编址(端口地址和内存地址长度不同,存储器地址空间不受I/O端口地址空间影响)
    3. I/O端口的地址译码(一个接口芯片内部有若干个可寻址的端口,有片选信号线和用于端口寻址的地址线)
  • CPU与外设之间数据传送的方式
    1. 程序传送
      • 无条件传送方式(CPU对外设控制时不用考虑其状态)
      • 查询传送方式(考虑状态)
    2. 中断传送(CPU与外设可以并行工作,适合少量数据传送)
    3. 直接存储器存取(DMA)(适合大批量数据传送,直接进行数据传送,传送过程无需CPU介入,需要接口芯片DMA控制器DMAC(包括控制状态寄存器,地址寄存器,字节计数器),传送时CPU放弃总线控制权)
      • 单字节传输
      • 块传输
      • 请求传输
  • CPU执行程序时,出现中断请求,CPU暂停正在执行的程序,赚取处理该事件,并在处理完毕后返回断点处继续执行被暂停的程序,这一过程称为中断
  • 断点处指返回主程序时执行的第一条指令的地址
  • 为实现中断功能设置的硬件电路和与之对应的软件称为中断系统
  • 中断源
    1. 硬件中断源
    2. 软件中断源
  • 中断处理过程
    1. 中断请求
    2. 中断响应(一旦进入中断处立即清除请求信号)
    3. 保护断点(关中断,将标志寄存器内容入栈保存,将CS和IP内容入栈保存)
    4. 中断处理(执行中断服务程序)
    5. 中断返回(中断服务程序的最后有一条中断返回指令)(恢复断点)
  • 中断优先级用于处理多个中断请求
  • 中断优先级的确定:
    1. 软件查询
    2. 硬件排队电路(可编程中断控制器)
  • 中断嵌套
  • 8086/8088可以处理256种不同类型的中断,分为:
    1. 外部中断(由外设请求引起)
    2. 内部中断(CPU内部由于执行指令时引起)
  • 中断源优先次序: 软件中断(除单步中断外),非屏蔽中断,可屏蔽中断,单步中断
  • 中断向量表: 存放中断向量的一个特定的内存区域。
  • 中断向量: 中断服务程序的入口地址
  • 每个终端服务程序的入口地址占4个存储单元,低地址存放IP,高地址存放CS
  • 8086系统中中断向量表位于内存的前1KB(256*4=1024)00000H ~ 003ffH
    1. 0 ~ 4: 专用中断,依次为:除法出错,单步中断,NMI,断点中断,溢出中断(00000H~00013H)
    2. 5 ~ 31: 系统保留(00014H~0007FH)
    3. 32 ~ 255: 共软中断INT n,或可屏蔽中断INTR使用
  • 21H的中断一用作DOS的系统功能调用
  • 中断服务程序入口地址 = 中断类型号*4
  • 中断服务程序的设计:
    1. 关中断
    2. 保护现场
    3. 开中断
    4. 中断服务
    5. 恢复现场
    6. 中断返回

第四章 8086指令系统


  • 指令格式
位数 符号 意义
0 ~ 2 R/M 存住其中操作数的偏移地址
3 ~ 5 REG 寄存器
6 ~ 7 MOD 寻址方式字节,规定指令操作数类型
8 W 操作数类型,0表示字节,1表示字
9 D 操作数传送方向(0表示源操作数,1表示目的操作数
10 ~ 15 OPCODE 操作码

* REG字段编码表

REG W=1(字操作) W=0(字节操作)
000 AX AL
001 CX CL
010 DX DL
011 BX BL
100 SP AH
101 BP CH
110 SI DH
111 DI BH

* MOD 字段编码表

MOD 寻址方式
00 存储器寻址,没有位移量
01 存储器寻址, 有8位位移量
10 存储器寻址, 有16位位移量
11 寄存器寻址,没有位移量

* MOD与R/M字段组合的寻址方式

MOD=11存储器寻址 MOD=11 MOD=11 MOD!=11 MOD!=11 MOD!=11 MOD!=11存储器寻址和偏移地址的计算公式
R/M W=1 W=0 R/M MOD=00 MOD=01 MOD=10
000 AX AL 000 [BX+SI] [BX+SI+D8] [BX+DI+D16]
001 CX CL 001 [BX+DI] [BX+DI+D8] [BX+DI+D16]
010 DX DL 010 BP+SI BP+SI+D8 BP+SI+D_16
011 BX BL 011 [BP+DI] [BP+DI+D8] [BP+DI+D16]
100 SP AH 100 [SI] [SI+D8] [SI+D16]
101 BP CH 101 [DI] [DI+D8] [DI+D16]
110 SI DH 110 D16 [BP+D8] [BP+D16]
111 DI BH 111 [BX] [BX+D8] [BX+D16]
  • 数据传送指令 MOV
    1. 目的操作数可以是存储器,寄存器(不能IP)和段寄存器(不能CS)
    2. 能实现: 存储单元之间的传送,立即数至段寄存器的传送,段寄存器之间的传送
    3. CS可以作为源操作数
  • POSHPOP,堆栈操作指令
    1. 现移后入: 先改变SP的值,在进行数据的操作
  • 数据交换指令 XCHG, 交换源操作数和目的操作数的数据
    1. 两者不能同时为存储器
    2. 段寄存器的内容不能参与交换
  • 字节转换指令 `

你可能感兴趣的:(系统学习)