寄存器概述
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。
8086CPU有14个常用寄存器,AX,BX,CX,DX(这几个寄存器用来存放一般数据)....等(以后用到细说)
8086CPU所有寄存器都是16位的,可以存放两个字节
数据在寄存器中存放的情况
例:
数据:18 二进制:10010 表示情况:从低位到高位去填,空位补0.
数据:20000
二进制:自己算吧,太J长 表示情况:可以存储的最大数为多少?
2的16次方-1
高位寄存器是如何兼容低位寄存器的?
高位寄存器会分出若干个低位寄存器进行兼容,例如16位和8位,16位寄存器可以分成2个8位寄存器进行兼容,2个8位寄存器相互独立./
例如AX可以分为AH(高位)和AL(低位)两个寄存器.
如果是兼容之前的系统,就可以单独拿出低位寄存器.高位全部填0就行了.
再上个图加强理解
单位:字
一个字 = 2个字节 = 16位 = 4个16进制数 这个字的高8位和低8位就刚好存储在寄存器的高8位和低8位中
几条简单的汇编指令
下面看个问题
mov ax,4E20H
add ax,1406H //这句执行完AX = 6226H
mov bx,2000H
add ax,bx //这句执行完AX= = 8226H
mov bx,ax
add ax,bx
那么最后一句执行完 理应当为 8226H + 8226H = 1044CH; ,但是8086 AX为16位寄存器,所以最后ax中的数据为044CH. 高位舍弃掉(不是真的舍弃了,后面看到的时候再说)
此处接
物理地址
CPU访问内存单元的时候,都要向内存指明访问哪个地址的内存单元,所有内存单元组成的空间就是一个线性空间,在线性空间里面的每个内存单元都有唯一的地址,这个地址我们就叫做物理地址。
CPU通过地址总线送入存储器的地址必须是物理地址,这个物理地址是在CPU内部形成之后,才通过地址总线送入存储器的,不同的CPU计算物理地址的方式不同,我们这里先说8086的。
CPU内部有2个计算物理地址的特殊地址,那就是段地址和偏移地址
8086CPU物理地址=段地址*16+偏移地址.
为什么物理地址要这么计算呢.
因为8086CPU是16位的,最大寻址能力就是2的16次方 64k,但是8086是有20根地址总线,寻址能力为1MB。所以,内部采用2个16位地址相加的方式合成20位地址.段地址*16 实际上就是左移4位。