知识基础
- 为什么8086数据分高八位与低八位==>因为数据的类型有很多,有些数转换为2进制只需要几位bite位就能表示,有些数需要十多位bite位才能表示,处于计算机每次对01二进制的切分操作,规定8位=一个字节,16位=一个字,计算机CPU每次处理的bite位数的能力被定为计算机的位数,但是计算机对01二进制的切分时以一个字节8位的整数倍来切分,所以16位被划分为高8位与低八位!
- 在80x86 CPU中设置的段寄存器只有16位,只能存放20位段起始地址的高16位,物理地址的高16位称它为段基值
- 通用寄存器功能:数据交换 and 算术运算并保存算术结果
8086处理器所有的寄存器 | |
---|---|
数据寄存器 | |
变址寄存器 | SP / BP / SI / DI |
段寄存器 | CS / DS / SS / ES |
控制寄存器 | IP / FLAGS |
数据寄存器 | AX + BX + CX + DX |
---|---|
AX 累加器= accumulate | 1:存放乘除等指令的操作数 >> 2:外部IO设备数据与CPU的交换 |
BX = 基址寄存器 base | |
CX = 计数器 count | 1:保存计数值 >> 2:可用作通用寄存器 |
DX = 数据寄存器 data |
变址寄存器 | SP + BP + SI + DI |
---|---|
SP stack point | 栈指针寄存器 |
BP = Base point | 基地址寄存器 |
SI = source index | 源索引寄存器 |
DI = destination index | 目的索引寄存器 |
控制寄存器=控制处理器的操作模式 | IP + FLAGS |
---|---|
FLAGS | |
一&计算机系统
计算机 | 硬件 + 软件 |
---|---|
硬件 | CPU + 存储器 + 系统总线 + I/O接口接入的子系统 |
软件 | 系统软件 + 支持软件 + 应用软件 |
二&存储器
- 低位字节存入低地址,高位字节存入高地址
- 字单位地址用低地址表示
- 实模式:简单说就是16位模式,在16位模式下使用20根地址总线,可以寻址2^20=1MB的内存,但是处理器内部的寄存器只有16位,只能直接访问64K的空间地址,所以采用段地址+偏移地址的寻址方式来扩大寻址空间
存储器 | 地址(16进制) + 内容 |
---|---|
编程的基本单位 | 一个字节=8bite |
地址编码 | 每个字节都有一个地址编码 |
存储器数据的查找 | 找物理空间地址 |
---|---|
实际地址 | 实际物理地址 = 逻辑地址(段地址) + 偏移地址 |
段地址=16位的机器地址 | 每一段的段首地址定义为段地址,一段为16字节,共有16 * 16 * 16 * 16=64 * 1024=64K=6万4个段地址,标号范围为 0000H ~ FFFFH ==>本课本的8086机器存储的能力大小为64k |
偏移地址 | 存储的是偏移量的多少 |
物理地址( 00000H ~ FFFFFH = 16 * 16 * 16 * 16 * 16 = 2^20 = 1MB的字节空间) | 20位 ==>20根地址线 |
段寄存器 | 专门存放段地址的空间 |
---|---|
段寄存器 | CS + DS + SS + ES //段寄存器对段地址对应数据的类型,将混乱的段地址分为了4内 |
CS = code Segment | 代码_段寄存器(该段对应的段空间储存了程序代码) |
DS = Data Segment | 数据_段寄存器(该段对应的段空间储存了一般数据) |
SS = Stack Segment | 堆栈_段寄存器(该段对应的段空间储存了现场数据) |
ES = Extra Segment | 附加_段寄存器(该段对应的段空间储存了附加数据) |
注意: | CS / DS / SS / ES 在段寄存器的空间划分有2种划分形式==>1:均分 2:用多少给多少 |
寻址公式 | 物理地址 = 16*段地址 + 偏移地址 |
---|---|
例: | |
三&中央处理器
CPU | 运算器 + 控制器 + 寄存器 |
---|
寄存器 | 存储器 |
---|---|
CPU内部 | CPU外部 |
没有地址 | 有地址 |
四&外部设备
外部设备 | CPU外部设备与CPU的通信通过接口interface连接,每个接口包含了3个寄存器 |
---|---|
数据寄存器 | CPU与CPU外设数据交换 |
状态寄存器 | 保存外设与CPU的状态信息 |
命令寄存器 | 保存CPU发给外设的控制命令 |
注意 | 接口中的三种寄存器都有自己的端口(port)地址 |
寄存器结构***32位前面加E***16位没有E
保护模式(内存保护)下的8086处理器的寻址方式
(需要查找表述附表才能得到段基地址)