汇编语言之寄存器

一、通用寄存器

一个典型CPU由运算器、寄存器、控制器构成,而寄存器是CPU中程序员可以用指令读写的部件。不同的CPU,寄存器的个数、结构是不同的。

8086CPU的寄存器都是16位的,由于8086CPU上一代CPU中寄存器都是8位的,为了兼容性,8086CPU的通用寄存器(通常用来存放一般性的数据)AX、BX、CX、DX这四个寄存器可以分成两个可独立使用的8位寄存器来用。AX=AH+AL     BX=BH+BL   CX=CH+CL   DX=DH+DL   。AX 的低八位构成AL,高八位构成AH。

二、字节,字,进制

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

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

一个字可以储存在一个16位寄存器,字的高八位储存在高八位寄存器,低八位储存在低八位寄存器。

为了区分进制,在十六进制表示的数据的后面加H,在二进制表示的数据后面加B,十进制表示的数据后面什么也不加。

三、指令,数据改变

汇编几条常用指令举例:

 寄存器中数据的改变:

 

注意:指令的两个操作对象的位数应相同,同时实现相加操作时,应注意内存溢出,防止出错漏位。

四、地址加法器,CS,IP,jmp

所有的内存单元构成的储存空间是一个一维的线性空间,每一个内存空间在这个空间中都有唯一的地址,即物理地址。

16位结构CPU能够一次性处理传输暂时储存的信息的最大长度是16位的,寄存器和运算器之间的通道为16位。

8086CPU有20位地址总线,可以传送20位地址。但是CPU是16位结构。为了充分利用不浪费,8086CPU采用一种在内部用两个16位地址合成的方法来形成20位的物理地址。

地址加法器采用   物理地址=段地址*16+偏移地址    用段地址和偏移地址合成物理地址

CS和IP是8086CPU中两个最关键的寄存器,CS为代码段寄存器,IP为指令指针寄存器,IP每次是根据指令的空间大小进行更新。

修改CS、IP的指令:jmp指令。

①同时修改CS、IP的内容:jmp段地址:偏移地址

②只修改IP的内容:jmp 某一合法寄存器

猜你喜欢

转载自www.cnblogs.com/bowentianxia/p/9748708.html