《汇编语言》第二章学习笔记
第二章 寄存器(CPU工作原理)
运算器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据的传送。
8086CPU 有14 个寄存器,每个寄存器有一个名称。这些寄存器是: AX 、BX 、EX 、DX 、SI 、DI 、SP 、BP 、IP 、CS 、SS 、OS 、ES 、PSW。每个寄存器都是16位的。
通用寄存器
AX 、BX 、EX 、DX 四个寄存器通常用来存放一般性的数据,被称为通用寄存器。可以分为两个可独立使用的8位寄存器使用

字在寄存器中的存储
字节:1byte
字(word):2byte,分为高位字节和低位字节
通常的表示方法:16进制数后加H,二进制数后加B,十进制数后不加
物理地址
CPU 通过地址总线送入存储器的必须是一个内存单元的物理地址。
16 位CPU
概括地讲, 16 位结构(16 位机、字长为16 位等常见说法,与16 位结构的含义相同)描
述了一个CPU 具有下面儿方面的结构特性:
• 运算器一次最多可以处理16 位的数据
• 寄存器的最大宽度为16 位
• 寄存器和运算器之间的通路为16 位。
8086CPU给出物理地址的方法
地址总线:20位
CPU:16位
解决方法:相对寻址
物理地址=段地址X16 +偏移地址
段的概念
以后,在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址$\times$16 定段的起始地址(基础地址),用偏移地址定位段中的内存单元。
有两点需要注意:
- 段地址X 16 必然是16 的倍数,所以一个段的起始地址也一定是16 的倍数;
- 偏移地址为16位, 16 位地址的寻址能力为64KB, 所以一个段的长度最大为64KB 。
注:CPU可以用不同的段地址和偏移地址形成同一个物理地址
段寄存器
CS、DS、SS、ES
CS和IP
CS:代码段寄存器
IP:指令指针寄存器
任意时刻, CPU 将CS:IP 指向的内容\(CS$\times$16+IP\)当作指令执行。
8086CPU工作过程
(1) 从CS:IP 指向内存单元读取指令, 读取的指令进入指令缓冲器;
(2) IP=IP+所读取指令的长度,从而指向下一条指令;
(3) 执行指令。转到步骤(1), 重复这个过程。
修改CS、IP的指令
jmp 段地址:偏移地址 :同时修改CS、IP的值
jmp ax: 将ax的值赋给IP
代码段
本质上仍然是一段0和1,要让CPU将其视为代码段(执行我们放在代码段中的指令),必须要将CS:IP 指向所定义的代码段中的第一条指令的首地址。
几条汇编指令
注意:add al,93H,最高位丢失,ax 中的数据为: 0058H,此时al 是作为一个独立的8 位寄存来使用的,和ah 没有关系, CPU 在执行这条指令时认为ah 和al 是两个不相关的寄存器。不要错误地认为,诸如add al,93H 的指令产生的进位会存储在ah 中, add al,93H 进行的是8 位运算。

浙公网安备 33010602011771号