1 通用寄存器

在 8086 CPU 中,通用寄存器有 8 个,分别是 AX,BX,CX,DX,SP,BP,SI,DI , 至于为什么给它们取名做通用寄存器,那是因为,这些个寄存器每一个都有自己专门的用途, 比如 CX 作为计数寄存器,则是在使用 LOOP 指令循环时用来指定循环次数的寄存器, 如果它们每一个都只有一个专用的作用,那就它们只能称之为专用寄存器了, 正是因为这些个寄存器还可以用来传送数据和暂存数据,所以才称它们为通用寄存器 。

1.1 数据寄存器

概述

数据寄存器有 AX,BX,CX,DX 四个组成, 由于在 8086 之前的 CPU 为 8 位 CPU,所以为了兼容以前的 8 位程序, 在 8086 CPU 中,每一个数据寄存器都可以当做两个单独的寄存器来使用, 由此,每一个 16 位寄存器就可以当做 2 个独立的 8 位寄存器来使用了 。

  • AX 寄存器可以分为两个独立的 8 位的 AH 和 AL 寄存器;
  • BX 寄存器可以分为两个独立的 8 位的 BH 和 BL 寄存器;
  • CX 寄存器可以分为两个独立的 8 位的 CH 和 CL 寄存器;
  • DX 寄存器可以分为两个独立的 8 位的 DH 和 DL 寄存器;

除了上面 4 个数据寄存器以外,其他寄存器均不可以分为两个独立的 8 位寄存器 ;注意在上面标志中的“独立”二字,这两个字表明 AH 和 AL 作为 8 位寄存器使用时,可以看做它们是互不相关的,也就是看做两个完全没有联系的寄存器 X 和 Y 即可,比如指令 MOV AH , 12H ,CPU 在执行时根本就不会知道 AL 中是什么,因为它只认识 AH 。

image.png

AX

BX

2 字在寄存器中的储存

image.png

2.1 进位值不保存

image.png
image.png

注意,此时AL是作为一个独立的8为寄存器来使用的,和AH没有关系,CPU在执行这条指令的时候会认为AHAL是两个不相关的寄存器. 不能错误地认为,诸如add al, 93H的指令产生的仅为会储存在AH中,add al, 93H进行的是第二章: 寄存器 - 图5位运算

image.png

练习

image.png
image.png

3 CPU与地址

3.1 CPU的位数

image.png

3.2 8086CPU 寻址

image.png
image.png
image.png

3.3 段的概念

image.png

3.4 段寄存器

CS&IP

  • CS是代码段寄存器
  • IP是指针指令寄存器

代码段

image.png

image.png

CS&IP的修改

image.png

问题

image.png
image.png