汇编语言第二章

一、知识点总结

 1.CPU:

一个典型的CPU由运算器、控制器、寄存器等器件组成。

内部总线实现CPU内部各个器件之间的联系。

外部总线实现CPU和主板上其它器件的联系。

2.ISA(Instruction Set Architecture):处理器支持的指令和指令的字节级编码(不同处理器,往往ISA也不同)

 

3.x86:  Intel现在称其指令集为IA32指令集,也就是“Intel 32位体系结构”(Intel Architecture 32-bit)。

 

4.字在字节中的存放:

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

字的高8位 → 存放于通用寄存器的高8位寄存器;

字的低8位 → 存放于通用寄存器的低8位寄存器。

 

5.mov和add指令使用时应注意:两个操作对象的位数应一致。

 

6.8086表示物理地址的方法:

8086中,通过段地址: 偏移地址来间接描述内存单元的物理地址。

CPU根据如下公式计算得到物理地址:

 [物理地址 = 段地址 × 16 + 偏移地址]

注意:

① 「段地址: 偏移地址」 也称「逻辑地址」

② 「段地址 × 16 」 构成段的起始物理地址,故根据需要划分段使用时,段的起始物理地址必须是16的倍数。

 

7.CS IP:

CS: 代码段段寄存器,用于存放代码段的「段地址」

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

CS:IP对应的物理地址存放的是CPU将要读取的指令。

 

8.计算机工作过程:

第1步: CPU基于CS:IP,计算出物理地址,然后到相应的内存单元读取指令,送到指令缓冲区。

第2步: CPU自动修改IP的值,IP = IP + 所读取指令的长度,从而为下一条指令读取做准备;

第3步: 执行指令。 转第1步,重复此过程。

(CUP刚开始工作时,CS初值为FFFFH;IP初值为0000H)

 

9. IP和CS值的修改不能通过mov指令实现,需借助转移指令 (如jmp, call等)。

用jmp命令修改格式如下:

jmp  段地址:偏移地址

也可以值修改IP的值:

jmp ax  (IP <- ax)

 

二、知识拓展

8086的14个寄存器可分为通用寄存器、指令指针、标志寄存器和段寄存器(本处只记录了通用寄存器的相关知识)

通用寄存器可分为数据寄存器和指针寄存器及变址寄存器

数据寄存器:

 

AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。

 

BH&BL=BX(base):基址寄存器,常用于地址索引

 

CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.

 

DH&DL=DX(data):数据寄存器,常用于数据传递。

指针寄存器及变址寄存器:

SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置
 
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置
 
SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针
 
DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
 
这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。

指令指针IP

指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加(取出该字节的长度,如:BIU从内存中取出的是1个字节,IP就会自动加1,如果BIU从内存中取出的字节数长度为3,IP就自动加3),指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址(EA,Effective Address)。

 

posted @ 2018-10-11 15:09  鎖夢  阅读(231)  评论(0编辑  收藏  举报