---
# System prepended metadata

title: 微机复习

---

# 微机复习

## 第五、六章

### 系统的三大总线

- 定义： 总线（Bus）是计算机各种功能部件之间传送信息的公共通信干线，是由导线组成的传输线束。
- - 数据总线DB
  - 用于传送数据信息。可以是CPU把数据传送到存储器或I/O接口等部件，也可以其它部件的数据传送到CPU。

- - 地址总线AB
  - 专门用来传送地址，只能从CPU传向外部存储器或者IO端口

- - 控制总线CB
  - 传送控制信号和时序信号。可以是微处理器送往存储器活IO接口电路的。也可以是其他部件反馈给CPU的

- 总线宽度 一次可以同时传输的数据位数
- 总线工作频率 每秒能传输数据次数
- 传输率 每秒传输字节数

### 存储器扩展的基本方法与译码方法

- - 字和位扩展
  - 总片数=总容量/容量(片)

- - 位扩展
  - 值在位数方向扩展，地址线并联，数据线连接到CPU数据总线的各位。

- - 字扩展
  - 仅扩展存储容量，位数不变，同名地址线，数据线，读写线并联。

## 第七章

### 端口的定义，种类，编址方式

- 定义： 端口是接口电路种，能与CPU交换信息的寄存器

- - 分类
  - 数据口  存放CPU向外设输出或外设输入的数据
  - 控制口  存放控制信息---控制接口电路、外设的工作
  - 状态口  存放状态信息---反映外设的状态

- - 编址方式
  - - IO端口独立编址
    - IO端口不占用存储空间，CPU要有专用的IO指令
  - - 存储器映像方式
    - 把端口和存储单元等同看待，统一编址
    - 凡访问存储单元的指令都可以访问IO端口，端口地址但用存储空间

### 对端口的寻址方法

- - 直接寻址
  - IN AL，N；端口N取数->AL
  - OUT N，AL；AL内容到端口N

- - DX间址
  - IN AL，DX；[DX]端口--->AL
  - OUT DX，AL；AL---->[DX]端口

### 微机系统与接口的数据交换方式

- - 无条件传送
  - MOV DX，xxH
  - IN/OUT AL/DX,DX/AL

- - 查询方式
  - MOV DX,状态口
  - IN AL，DX
  - TEST AL，80H/1 JZ/JNZ（read/write）  之后同1

- - 中断向量表
  - 实模式下  中断向量表
  - 保护模式下 中断描述符表

- - 中断向量表的存放： 第n个中断向量的服务程序入口的偏移地址存放在4n-4n+3上

- - 设置方法

  - - 用户自己编写程序填写中断向量表

    - ```asm=
      CLI;LET SYSCALL CAN'T DO WORK
      PUSH DS;SAVE
      MOV AX,0000H
      MOV DS,AX;BASE ADDR 
      MOV BX,4*N;BX IS OFFSET
      MOV AX,OFFSET SERVICE;FUNC SERVICE
      MOV [BX],AX;PUSH FUNC ADDR
      MOV AX,SEG SERVICE
      MOV [BX+2],AX;THE TABLE LIKE DWORD OFFSET DWORD BASE ADDR,SO PUSH THE FUNC BASE ADDR
      POP DS;RET
      STI
      ```

    - DOS提供了两个子程序，用于中断向量的读出写入

    - - INT 21H的35H子功能，AL=中断类型码   ES:BX=n型中断向量，独出n型中断向量
      - INT 21H的25H子功能，DS=中断服务的代码段基址，DX=中断服务的偏移地址，AL=中断类型码

- - - ```asm=
      CLI
      PUSH DS
      PUSHA
      MOV AX,SEG SERVICE
      MOV DS,AX
      MOV DX,OFFSET SERVICE
      MOV AH,25H
      MO AL,N
      INT 21H
      POPA
      POP DS
      STI
      ```

- - IRET 弹出IR CS F

- DMA方式

## 8259（中断控制器）

### 定义

中断是指CPU在执行程序的过程中，由于某种外部或内部事件的作用，使CPU停止当前正在执行的程序而转去为该事件服务，待此事件服务结束后，又能自动返回到被中止了的程序中继续执行的过程。

### 中断方式

- - 中断方式
  - - 外部中断源 IO设别 数据通道 时钟 故障源
    - 内部中断源 执行INT  CPU指令异常

### 分类

- 外部 硬件
- 内部 软件

类型码跟向量看上面

### 相应过程&&条件

1.F寄存器到栈内保存

2.断的地址（cs跟ip）入栈

3.根据对应的中断号取出地址

4.执行完毕，中断发挥指令(IRET---->POP IP POP CS POP F)

条件

中断优先级 禁止中断 屏蔽中断 中断嵌套

### 8259处理

- 中断屏蔽寄存器 屏蔽字某位=1则对应中断被屏蔽
- 中断请求 对应位=1发起中断
- 优先权电路  比较优先级，比较cpu正在执行的跟刚进入的哪个优先级高
- 中断服务寄存器 记录cpu蒸菜服务的中断源  对应位=1为这波/正在执行

- - 过程
  - 由中断请求寄存器加到引脚IR0-IR7
  - 在屏蔽寄存器下，未被屏蔽的中断请求送入优先权电路判断
  - 判断后，选中当前最高级别的中断源从INT向CPU发出信号
  - 满足条件后，向8259发出两个中断响应信号
  - 第一个响应信号后，把对应位flag置1，把请求寄存器=0
  - 第二个响应信号后，把选中的类型码n送往cpu
  - CPU取出中断向量，完成中断服务

### 日时钟中断

40H:6CH～40H:6FH这4个单元(共32位)为日时钟计数器，每55ms加1次，计数到:001800B0H，为24小时,其计数值供系统软件使用。 

系统启动CPU执行BIOS种一段程序，读取CMOS实时时钟电路的时间值-->计数值-->40：6CH~40：6FH作为日时钟计数器的计数初值

- 定时周期==55ms整数倍时候，替换1CH 结束前不需要向8259发结束命令
- !=55ms整数倍时候，取输出周期与55ms的最大公约数，替换08H，结束前需要向8259发结束命令(MOV AL.20H   OUT 20H,AL)

### 用户中断

- 替换0AH，结束前只需向主8259发结束
- 替换71H，结束前需向主从8259各发结束

- - 步骤‘
  - 保存原来的
  - 替换为设计的
  - 打开用户中断（从8259开1，主开2的屏蔽置零
  - 结束前发送结束命令
  - 恢复成原来的

### 软件中断 VS 硬件中断

- - 相同
  - 都会引起程序中止
  - 获取中断码n后，都回取出中断源的中断向量IP CS，从而去执行

- - 不同
  - 引发方式不同
  - 获取中断类型码的方式不同
  - CPU响应条件不同
  - 中断处理程序的结束方式不同

## 8250

### 串行通信的数据传输方式和特点

数据倍逐位顺序传送

- 串行异步通信  指一帧字符用起始位和停止位来完成收发同步
- 串行同步通信   靠同步字符来完成收发双方同步

- - 传输方式
  - 单工 数据向一个固定方向传送
  - 半双工 都有收发能力，但就一条信道
  - 全双工  收发双方可以同时进行数据传输

#### 通信系统需要考虑的

- 信道的贷款和数据的传输速率
- 信号的调制与解调
- 串行通信的信号格式

### RS232C&&TTL

| 25针连接器端子号 | 名称 | 方向(从微机出发) | 功能                            |
| ---------------- | ---- | ---------------- | ------------------------------- |
| 2                | TXD  | 输出(DTE→DCE)    | 发送数据(Transmit Data)         |
| 3                | RXD  | 输入(DCE→DTE)    | 接收数据(Receive Data)          |
| 4                | RTS  | 输出(DTE→DCE)    | 请求发送(Request To Send)       |
| 5                | CTS  | 输入(DCE→DTE)    | 允许发送(Clear To Send)         |
| 6                | DSR  | 输入(DCE→DTE)    | 数据设备准备好(Data Set Ready)  |
| 7                |      |                  | 信号地(SignalGround)            |
| 8                | DCD  | 输入(DCE→DTE)    | 载波检测(Carrier DeteCt)        |
| 20               | DTR  | 输出(DTE→DCE)    | 数据终端准备好(Data Term Ready) |
| 22               | RI   | 输入(DCE→DTE)    | 振铃指示(Ring Indicator)        |

RS232C对信号的电平标准和控制信号的定义做了规定

逻辑1  电平在-3~-15v

逻辑0 电平在3~15v

TTL  逻辑1 +5v

逻辑0 0v

### 串行通信数据帧格式

| 起始位   | 数据位 | 奇偶校验位 | 停止位         |
| -------- | ------ | ---------- | -------------- |
| 1位逻辑0 | 5-8位  | 0-1位      | 1 1.5 2位逻辑1 |

### 数据传输速率

每秒传送的0 1 的个数

### 查询接收与查询发送

先拿3FD/2FDH的标记位，查询是否已经接收完毕/是否空着，之后再进行相应操作

#### 寄存器

```CMD
3F8H/2F8H        写入
3F8H/2F8H        读出
3F8H/2F8H        除数
3F9H/2F9H        中断允许
3FDH/2FDH        通信线状态
3FAH/2FAH        中断识别
3FEH/2FEH        MODEM状态
3FBH/2FBH        通信线控制
其中3FD
D0位：接收数据准备好(接收缓冲器满)标志位
D1位：溢出错标志位。
D2位：奇偶错标志位。
D3位：帧错(接收格式错)标志位。
D4位：线路间断标志位。
D5位：发送保持寄存器空闲标志位。D5＝1
D6位：发送移位寄存器空闲标志位。D6=1时候，一帧已经发送完毕
D7位：恒为0
3FA
D0＝1，允许接收到一帧数据后，内部提出“接收中断请求”。
D1＝1，允许发送保持寄存器空时，内部提出“发送中断请求”
D2＝1，允许接收出错时，内部提出“接收数据错中断请求”。
D3＝1，允许MODEM状态改变时，内部提出“MODEM中断请求”
3FC
D0位＝1,使引脚DTR＝0,从而使RS-232C引脚DTR为0,表示数据终端准备好
D1位＝1，使引脚RTS＝0，从而使RS-232C引脚RTS为0,表示8250请求发送
D2位＝1，使引脚OUT1＝0，系统机上没有使用。
D3位＝1，使引脚OUT2＝0，8250能送出中断请求。
D4位通常置0，设置8250工作在正常收/发方式；
若D4位置1，则8250工作在内部自环方式
3FBH/2FBH 
D0D1 数据位选择
D2 停止位
D3-D5 校验位
D6 中止位   1 输出长时间  0 正常通信
D7 1 除数 0 访问何用端口
```

## 8255

### 数据口&&工作方式

- - 数据口
  - 端口A  三种工作方式  0 1 2，对外8根引脚PA7~PA0    地址60H
  - 端口B  两种工作方式  0 1，对外8根引脚PB7~PB0       地址61H
  - 端口C   一中工作方式  0 ，对外PC0~PC7，分成上下两个部分   地址62H，控制口地址63H

- - 工作方式
  - 方式0 基本型输入/输出  直接用IN 跟OUT 对各端口进行读写 适用无条件传送的场合，不需要应答式联络信号
  - 方式1 选通型输入/输出  进行数据传送时候必须通过联络信号进行协调。在方式1的时候考研用查询方式也可以用中断方式与CPU进行数据交换
  - 方式2 双向传输  通过8个位与外设进行双向通信，可用中断方式，也可以用查询方式与CPU联络

#### 方式控制字

| D6-D5       | D4           | D3              | D2          | D1           | D0              |
| ----------- | ------------ | --------------- | ----------- | ------------ | --------------- |
| A的方式选择 | A口输入/输出 | C口7-4输入/输出 | B口方式选择 | B口输入/输出 | C口3-0输入/输出 |

#### 初始化流程

- 方式选择控制字--->控制口，目的选择某一口的工作方式（若端口选择1或者2，需要第二步
- C口置零/置1控制字写入控制口（D3-D1是选择pcn，D0是写入的数据，实现某一口的中断的禁止/允许（1允许

|       | A口方式1入 | A口方式1出 | B口方式1入 | B口方式1出 | A口双向 |
| ----- | ---------- | ---------- | ---------- | ---------- | ------- |
| INTEA | PC4        | PC6        |            |            |         |
| INTEB |            |            | PC2        | PC2        |         |
| INTE1 |            |            |            |            | PC6     |
| INTE2 |            |            |            |            | PC4     |

## 8254

### 计数器

8254内部集成了3个16位计数器，每个计数器有6种工作方式

### 初值的计算方法，设置方法

计数初值**=** fclk / fout

fclk:CLK端输入的初始频率

fout:OUT端输出的生成频率



### 工作方式

- - 方式0：计数结束OUT引脚输出正跃变信号
  - 写入后经过N次CLK后OUT 0--->1
- - 方式1：（可重触发的）硬件启动的单脉冲发生器
  - WR写入后，GATE经过0--->1时候，OUT 1--->0,经过N次CLK后，OUT 0 ---> 1，但当GATE再次0--->1后，这个N会重置（在下一次CLK开始时候，但第一次的计数是从OUT变化时候的就开始计数成N了）

- - 方式2：分频器（脉冲发生器）
  - 周期，到0下个CLK自动重装，到1的时候是负脉冲，其余是正

- - 方式3：方波发生器
  - 减2计数，初值自动重装，且OUT翻转
  - 偶数是减到0的时候重装，输出1：1
  - 奇数重装时候值为写入的初值-1，正脉冲是到-2重装，负脉冲是到0重装

- - 方式4：软件启动，单脉冲发生器
  - 无初值重装，减1，减到0输出，不需要GATE变换

- - 方式5：硬件启动，单脉冲发生器
  - 类似4，但开始减是在GATE 0 ->1跃变后开始

### 启动方式

- 软件启动：GATA=1，初值写入后，开始计数
- 硬件启动：初值写入后，不计数。当GATE从0--->1后开始计数

### 8254命令字

- 方式选择命令字

| D7-D6      | D5-D4    | D3-D1    | D0   |
| ---------- | -------- | -------- | ---- |
| 计数器选择 | 读写方式 | 工作方式 | 数制 |

```
D7 D6 =00  选择0#计数器,  =01  选择1#计数器
               =10  选择2#计数器,  =11  标志该命令字
                                                          是 “读出命令”

D5 D4  =00  标志该命令为 “锁存命令”
               =01  初值写入时, 只写低8位, 高8位自动
                       补0；计数值读出时, 只能读低8位
               =10  初值写入时, 只写高8位, 低8位自动
                       补0；计数值读出时, 只能读高8位。
               =11  初值写入 / 计数值读出的顺序为先
                       低8位,后高8位。
D0=0, 计数初值为二进制数, =1 BCD码数
```

- 锁存命令

```
D7 D6 为锁存对象。
            = 0 0，锁存0#当前计数值
            = 0 1，锁存1#当前计数值
            = 1 0，锁存2#当前计数值
D5 D4 = 00  标志该命令为 “锁存命令”
D7D6D0=110
D1是选择0计数器
D2是选择1计数器
D3是选择2计数器

```

### 初始化

- - 向控制寄存器写入方式选择命令字
  - 目的 学则一个计数器并去欸的那个工作方式和计数值的读写顺序
- - 向选择的计数器写入计数初值

### PC中的计数器作用


# 周
第五章：https://app.yinxiang.com/fx/d8ebb76a-3a56-4f70-bf95-a8d7acf0fdb4
第六章：https://app.yinxiang.com/fx/d7c0e3b0-24cf-4981-a874-f04e1eb6a390
第七章：https://app.yinxiang.com/fx/e12ab3d4-0836-45db-83c5-c8ccf91a279d
第八章：https://app.yinxiang.com/fx/b2c2c867-806f-4bff-9aa8-7192c9ece7e5
第九章：https://hackmd.io/@jylsec/BkIAVe56w/edit
第十章：https://hackmd.io/@jylsec/S19Tw69aw
第十一章：https://hackmd.io/@jylsec/rJLTq5K6D
# 安
第五章：https://note.youdao.com/ynoteshare1/index.html?id=ccc3a7ea3b2b290455a22b894da4cdf3&type=note
第六章：https://note.youdao.com/ynoteshare1/index.html?id=dc51d48b63fa076edd068c213e79a5b3&type=note
第七章：https://note.youdao.com/ynoteshare1/index.html?id=474eab46b4b9edf7d332bbe7edb97159&type=note
第八章：https://note.youdao.com/ynoteshare1/index.html?id=d4b97ea2c421c782b049c469a4c86b76&type=note
第九章：https://note.youdao.com/ynoteshare1/index.html?id=9eb6c4667f5ff1d091e45f44d7cdf246&type=note
第十章：https://note.youdao.com/ynoteshare1/index.html?id=9e7879bd6ce90afaab534733c1e2607c&type=note
第十一章：https://note.youdao.com/ynoteshare1/index.html?id=6e8a995d301988f6ca6db3f6f11f444d&type=note