8086CPU的所有寄存器都是16位的,可以存放两个字节
通用寄存器:ax、bx、cx、dx 这四个通常用来存放一般性的数据
下面便是这四个寄存器的逻辑结构,此时存放着16位表示的0。
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
这四个寄存器也可以看作两个8位寄存器,例如一个ax可以分为一个ah(ax的高位)、和al(ax的低位)
ah:
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
al:
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
同理:
bx可以分为bh、bl
cx可以分为ch、cl
dx可以分为dh、dl
段寄存器 : ds、es、ss、cs
所谓段寄存器就是存放段地址的寄存器---------(定位一个内存地址需要一个段地址和偏移地址)
ds、es为通用段地址寄存器
ss一般作为栈的段地址寄存器
cs位代码段寄存器,即执行我们写的代码内存地址的段地址到的寄存器
偏移地址寄存器:ip、si、di、sp、bp
sp:一般作为栈的偏移地址寄存器(一般和ss段地址寄存器搭配使用)
ip:指令指针寄存器(和cs一起指向代码,cs作为代码段地址,ip作为代码的偏移地址)
以下是段寄存器和偏移寄存器的一起使用的情况示意图(以cs,ip为例子):
标志寄存器:PSW
以8086为例子,8086cpu中有9个标志位,这里就不详细讲述,标志位的状态会存储在psw寄存器中。
如有错误欢迎留言指正。