一、寄存器和数据存储
1.CPU的组成
1.运算器进行信息处理;
2.寄存器进行信息存储;
3.控制器协调各种器件进行工作;
4.内部总线实现CPU内各个器件之间的联系。
2.8086CPU14个存储器
通用寄存器∶AX、BX、CX、DX
变址寄存器∶SI、Dl
指针寄存器:SP、BP
指令指针寄存器︰IP
段寄存器:CS、SS、DS、ES
标志寄存器:PSW
共性
8086CPU所有的寄存器都是16位的
可以存放两个字节
一个16位的存储器存储一个16位的数据:最大值是2^16-1
问题:
8086上—代CPU中的寄存器都是8位的,如何保证程序的兼容性?
方案: 通用寄存器均可以分为两个独立的8位寄存器使用
细化:
AX可以分为AH和AL
BX可以分为BH和BL
CX可以分为CH和CL
DX可以分为DH和DL
就是一个高位一个低位
3.字在寄存器中的存储
8086是16位CPU:意味着8086的字长是16bit
一个字可以存在一个16位寄存器中
这个字的高位字节存在这个寄存器的高8位寄存器(AH)
这个字的低位字节存在这个寄存器的低8位寄存器(AL)
二、mov和and指令
注:汇编指令不区分大小写
mov ax,bx; //将寄存器bx中的数据送入寄存器ax ax=bx; add ax,bx; //将ax和bx里面的内存相加,结果保存在ax
三、寄存器的类型
1.类型
1.通用寄存器
也叫数据寄存器
AX——Accumulator 累加寄存器 也叫累加器
BX——Base 基地址寄存器
CX——Count 计数器寄存器
DX——Data 数据寄存器
2.段寄存器
CS——Code Segment 代码段寄存器
DS——Data Segment 数据段寄存器
SS——Stack Segment 堆栈段寄存器
ES——Extra Segment 附加段寄存器
3.控制寄存器
FLAG:标志寄存器
IP——Instruction Pointer 指令指针寄存器
4.变址寄存器
主要用于存放存储单元在段内的偏移量
SI——Source Index 源变址寄存器
DI——Destination Index 目的变址寄存器
5.指针寄存器
SP——Stack Pointer 推栈指针寄存器
BP——Base Pointer 基指针寄存器
6.标志寄存器
PSW
2.作用
CS:IP 两个寄存器指示了 CPU 当前将要读取的指令的地址
8086CPU所有的寄存器都是16位的,可以存放两个字节,而且通用寄存器可以拆分为两个8位的寄存器,一个低地址,一个高地址
四、内存的分段表示法
1.物理地址
(基础地址)段地址*16+偏移地址=物理地址
原因:8086的地址总线宽度为20,寻址能力为1MB,但是寄存器都是16位的,所以为了不浪费寻址空间,就用连个16位的地址(段地址,偏移地址)相加得到一个20位的物理地址
2.CPU分段
CPU可以通过这个物理地址,在内存中寻址找到对应的内存空间
内存并没有分段,段的划分来自CPU
段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数
偏移地址为16位,16位的寻址能力为2^16B=64KB,所以一个段的长度最大为64KB