16位CPU意味着:寄存器最大宽度为16,一次传输的最大数据为16位,寄存器和运算器之间的通路是16位
字长:是由寄存器的最大尺寸决定的。在8086中,字长为16位,2字节。在80386中,字长为4字节。
8086的内存的物理地址=段地址*16+偏移地址
给定段地址为
0001H
,仅通过变化偏移地址寻址, 8086
CPU
的寻址范围为
0010H
到
1000FH
。<=0001+ffff
寻址范围是由寄存器的最大尺寸决定的。
8086由14个寄存器组成:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、DS、ES、SS、FLAG
数据寄存器:
AX->AH+AL
BX->BH+BL
CX->CH+CL
DX->DH+DL
段寄存器:
CS、DS、SS、ES
指针寄存器:SP(栈顶指针)、BP(基址指针)
变址寄存器:SI(源地址)、DI(目的地址)
代码段寄存器:CS,寄存器中存放的是代码的基地址
指令寄存器:IP,寄存器中放的是代码段的偏移地址
CPU从CS和IP对应的内存中读取指令,指令被缓存了,然后IP被赋值为当前IP+指令长度,接着执行指令,执行完成后,重复刚才的步骤。
如果需要修改CS和IP的内容,使用指令
jmp 立即数:立即数//相当于修改CS:IP
jmp ax//这个相当于修改IP
jmp bx//相当于修改CS
如果需要读取数据段的数据,使用寄存器
代码段寄存器:DS,即代码段的基地址
代码段偏移地址:[0],抽象为[bx]
其中ds:[bx]代表内存单元,bx寄存器中存放的是为偏移量
如果需要使用栈,使用寄存器
SS:栈段,即栈段的基地址
SP:偏移量,即栈顶元素的偏移量
涉及到的指令为:
push ax//此时SP-2
pop ax//此时SP+2
栈操作是以字为单位的。
栈段的最大空间为2的16次方个存储单元,即64KB