汇编语言第二章

时间:2021-03-12 01:17:18

1.通用寄存器

8086CPU的所有寄存器都是16位的,可以存放两个字节。

而AX,BX,CX,DX这四个寄存器被称为通用寄存器,并且这些寄存器都可以分为两个独立的八位寄存器来使用。(AH BH CH DH AL BL CL DL)

2.字在寄存器中的存储

一个字由两个字节组成,而一个字节由八个bit组成,所以由此可知字节通常放在八位寄存器中,字通常放在十六位寄存器中(这个字就可以分为高位字节和低位字节)。

3.几条汇编指令

mov 和add

例如mov ax,18 :就是将18送入寄存器ax中       mov ax,bx :将bx中的值送到寄存器ax中

       add ax,8 :就是将寄存器ax中的值加上8     add ax,bx :将ax和bx中的值相加,然后存入寄存器ax中

(在这边不区别大小写)

此外,在进行数据传输时或运算时,要注意指令的两个对象的位数应当是一致的。

4.物理地址

CPU必须是一个内存单元的地址总线通过地址总线送入存储器的。

但是在此之前,必须在内部先形成物理地址。

不同的CPU可以有不同的形成物理地址的方式。

5.16位结构的CPU

特性:CPU一次性最多处理16位的数据;

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

          对于16位的CPU,能一次性处理.传输.暂时存储16位的地址。

6.8086CPU给出物理地址的方法

采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址:

CPU中的相关部件提供两个16位的地址,一个为段地址,另一个为偏移地址;

然后这两个地址被送到一个叫地址加法器的部件;

地址加法器采用物理地址=段地址*16+偏移地址的方法将这两个16位地址合成一个20位的物理地址;

送到地址总线,最后传送到存储器。

7.“段地址*16+偏移地址=物理地址”的本质含义

CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址的相加,给出内存单元的物理地址。

8.段

段是可以根据需要将地址连续,其实物理地址为16倍数的一组内存单元当作一个段使用。

9.cs和IP

cs:代码段段寄存器,用于存放代码段的段地址;

IP:指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址

即:指令的物理地址=CS*16+IP.。

修改CS,IP的指令:jmp

形如jmp 段地址:偏移地址

而jmp ax,在含义上好似:mov IP,ax。