知识基础

  • 为什么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处理器的寻址方式

(需要查找表述附表才能得到段基地址)