汇编语言之第二章寄存器
一、通用寄存器
一个典型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 某一合法寄存器