# 计算机系统概述

# 硬件 & 软件

硬件

  • 中央处理器 CPU
    • 控制器、运算器、寄存器
  • 存储器(呈现的是存储器地址)
    • 主存储器:RAM 和 ROM
    • 辅助存储器:磁盘、光盘、U 盘
  • 外部设备(呈现出端口,即 I/O 地址)
    • 输入和输出设备

软件

  • 系统软件
  • 应用软件

# 进制转换

十进制小数转换成二或十六进制:小数部分分别乘以各自的基数,记录整数部分,直到小数部分为 0 为止

二或十六进制数转换成十进制数

# ASCII 码

回车0DH0DH

换行0AH0AH

响铃07H07H

数码090\sim 930H39H30H\sim 39H

大写字母AZA\sim Z41H5AH41H\sim 5AH

小写字母aza\sim z61H7AH61H\sim7AH

空格20H20H

# 补码

8 位二进制补码:128+127-128\sim +127

16 位二进制补码:215+2151-2^{15}\sim +2^{15}-1

32 位二进制补码:231+2311-2^{31}\sim +2^{31}-1

# 微机的软件

应用软件:

  • 文本编辑器
  • 汇编程序
  • 链接程序
  • 调试程序
  • 集成化开发环境

# 微型计算机系统

主存空间分配:

整个1MB1MB 主存空间从低位到高位地址可分为四个区域:

  1. 基本 RAM 区(00000H-9FFFFH):操作系统占掉一部分低地址,其他向用户程序开放
  2. 保留 RAM 区(A0000H-BFFFFH):为系统安排的 “显示缓存存储区”
  3. 扩展 ROM 区(C0000H-DFFFFH):用于为系统不直接提供支持的外设安排设备驱动程序
  4. 系统 ROM 区(E0000H-FFFFFH):由系统占用,主要提供 ROM-BIOS 程序

# 8086 微处理器

# 结构

  • 总线接口单元 BIU:负责读取指令和操作数

  • 执行单元 EU:负责指令译码和执行

  • 地址总线是 20 位,8086 有 1 兆存储单元,1 兆是 20 位
  • 数据总线 16 位,8086 有 16 根数据线

# 寄存器

数据寄存器

AX:累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等

BX:基址寄存器,常用做存放存储器地址

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

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

变址寄存器

SI:源变址寄存器

DI:目的变址寄存器

指针寄存器

SP 为堆栈指针寄存器,指示栈顶的偏移地址,不能再用于其他目的,具有专用目的

BP 为基址指针寄存器,表示数据在堆栈段中的基地址

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

标志寄存器

指针指令 IP

指令指针寄存器 IP,指示代码段中指令的偏移地址

它与代码段寄存器 CS 联用,确定下一条指令的物理地址

计算机通过 CS : IP 寄存器来控制指令序列的执行流程

段寄存器

CS:指明代码段的起始地址

  • CS:IPCS : IP 取得下一条要执行的指令

SS:指明堆栈段的起始地址

  • SS:SPSS:SP 操作堆栈顶的数据

DS:指明数据段的起始地址

  • DS:EADS:EA 存取数据段中的数据

ES:指明附加段的起始地址

  • ES:EAES:EA 存取附加段中的数据
  • 是串操作的目的区必须是附加段

# 数据地址对齐

字单元安排在偶地址(xxx0B)、双字单元安排在 模 4 地 址(xx00B)

# 存储器的分段管理

8086 CPU 有 20 条地址线但数据总线是 16 位

  • 最大可寻址空间为2201MB2^{20}=1MB

  • 物理地址范围从00000HFFFFFH00000H~FFFFFH

8086CPU 将1MB1MB 空间分成许多逻辑段

  • 每个段最大限制为 64KB
  • 段地址的低 4 位为 0000B

这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址

逻辑地址:段基地址:段内偏移地址

  • 段地址说明逻辑段在主存中的起始位置,8086 规定段地址必须是模 16 地址:xxxx0H省略低 4 位 0000B,段地址就可以用 16 位数据表示,就能用 16 位段寄存器表达段地址
  • 偏移地址说明主存单元距离段起始位置的偏移量,每段不超过 64KB,偏移地址也可用 16 位数据表示

将逻辑地址中的段地址左移 4 位,加上偏移地址就得到 20 位物理地址

# 1MB 空间的分段

# 指令的组成

操作码

# 8086 的寻址方式

# 立即数寻址

指令中的操作数存放在机器代码中

# 寄存器寻址

操作数存放在 CPU 的内部寄存器 reg 中

# 存储器寻址

指令中给出操作数的主存地址信息(偏移地址,称之为有效地址 EA),而段地址在默认的或用段超越前缀指定的段寄存器中

  1. 直接寻址方式:指令中直接包含有效地址

    1
    2
    mov ax, [2000H]
    ;AX <- DS:[2000H]
  2. 寄存器间接寻址方式:有效地址存放在基址寄存器 BX 或变址寄存器 SIDI

  3. 寄存器相对寻址方式:有效地址是寄存器内容与有符号 8 位或 16 位位移量之和,寄存器可以是 BX/BP SI/DI

    • BX/SI/DI 寄存器默认在 DS,对应 BP 寄存器默认在 SS
  4. 基址变址寻址方式:有效地址由基址寄存器(BX 或 BP)的内容加上变址寄存器(SI 或 DI)的内容构成:

    • 有效地址=BX/BP+SI/DI
    • 段地址对应 BX 基址寄存器默认是 DS,对应 BP 基址寄存器默认是 SS;可用段超越前缀
  5. 相对基址变址寻址方式:有效地址是基址寄存器 (BX/BP)、变址寄存器 (SI/DI) 与一个 8 位或 16 位位移量之和:

    • 有效地址=BX/BP+SI/DI+8/16 位位移量
    • 段地址对应 BX 基址寄存器默认是 DS,对应 BP 基址寄存器默认是 SS;可用段超越前缀

# 寻址的多种表示方式

1
2
3
4
5
6
7
8
9
MOV AX,[BX][SI] 
;MOV AX,[BX+SI]

MOV AX,COUNT[SI]
;MOV AX,[SI+COUNT]

MOV AX,WNUM[BX][SI]
;等同于 MOV AX,WNUM[BX+SI]
;等同于 MOV AX,[BX+SI+WNUM]

# 数据寻址的组合

1
2
reg, imm/reg/mem
mem, imm/reg