CPU中的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。寄存器包括:AX、BX、CX、DX、SI、DI、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
2.1 通用寄存器
8086CPU的所有寄存器都是16位的,可以存放两个字节。AX,BX,CX,DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
8086CPU的AX,BX,CX,DX这四个寄存器都可分为两个可独立使用的8位寄存器使用:
2.2 字在寄存器中的存储
字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。
字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。
tips:在十六进制表示的数据后面加H,在二进制表示的数据后面加B,十进制表示的数据后面什么也不加。
2.3 几条汇编指令
为了使具有高级语言基础的读者更好地理解指令的含义,有时会用文字描述和高级语言描述这两种方式来描述一条汇编指令的含义。
在进行数据传送或运算时,要注意指令的两个操作对象的位数应该是一致的。
2.4 物理地址
CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。
2.5 16位结构的CPU
16位结构的CPU的结构特性:
1. 运算器一次最多可以处理16位的数据
2.寄存器的最大宽度为16位
3. 寄存器和运算器之间的通路为16位。
2.6 8086CPU给出物理地址的方法
8086CPU有20位地址总线,可以传送20位数据。
8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。
地址加法器采用物理地址=段地址*16+偏移地址的方法用段地址和偏移地址合成物理地址。
2.7 段地址*16+偏移地址=物理地址 的本质含义
本质含义:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
2.8 段的概念
内存并没有分段,段的划分来自于CPU,将若干地址连续的内存单元看作一个段,用段地址*16定位段的起始地址(基础地址)。
2.9 段寄存器
4个段寄存器:CS,DS,SS,ES。
2.10 CS和IP
CS和IP是8086CPU中两个最关键的寄存器。CS为代码段寄存器,IP为指令指针寄存器。
2.11 修改CS、IP的指令
jmp指令
mov指令不能用于设置CS、IP的值。jmp 段地址:偏移地址 指令的功能为:用指令中给出的段地址修改CS,偏移地址修改IP。