汇编语言第二章寄存器

随着第一章的结束,我们对汇编语言的概况有了足够清晰和明确的基本认识,第二章的展开将会围绕着寄存器的方方面面具体阐释,寄存器是CPU中程序员可以用指令读写的部件,可以通过更改寄存器中的内容来实现对CPU的掌控。

不同的CPU,寄存器的个数、结构是不同的,8086CPU有12个寄存器,分别是AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

通用寄存器

AX、BX、CX、DX(16位)

一个16位寄存器可以存储一个16位的数据,为了和早期的CPU操作兼容,每个通用寄存器分为2个8位寄存器来使用。

AX分为AH和AL
BX分为BH和BL
CX分为CH和CL
DX分为DH和DL

 拿AX寄存器举例

下面对几个基本概念进行补充:

字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。

字:一个字由两个字节组成,可以存在一个16位寄存器中。

汇编指令

程序员通过汇编指令来控制CPU进行工作。

下面举几个常见的汇编指令:

汇编指令中不分大小写,在mov和add指令操作中,操作对象必须位数一致,运算时如果超过寄存器的位数,要舍掉

物理地址

CPU通过地址总线送入存储器的,每一个单元的唯一地址。

16位CPU的特性:

运算器最多可以处理16位的数据。

寄存器的最大宽度为16位。

寄存器和运算器之间的通路为16位。

我们这次具体介绍8086CPU给出物理地址的方法:

8086CPU有20位地址总线,可以传送20位地址,而8086CPU只是16位结构,其采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址,

物理地址=段地址*16+偏移地址

段地址也称为基础地址或者起始地址,段只是一个隐藏概念。

段寄存器:CS、DS、SS、ES

提供段地址

CS:代码段寄存器,IP:指令指针寄存器

在8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行

jmp:此命令用来修改CS、IP的值。

举例

jmp 4AE3:2

CS ← 4E3H
IP ← 2

原文地址:https://www.cnblogs.com/-Cold/p/9742876.html