当前位置: 代码迷 >> 汇编语言 >> 编译语言基础知识学习笔记(二)
  详细解决方案

编译语言基础知识学习笔记(二)

热度:145   发布时间:2016-05-02 04:27:37.0
汇编语言基础知识学习笔记(二)

一.寄存器(CPU工作原理)

CPU由运算器、控制器、寄存器等器件构成。在CPU中,运算器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据传送。

不同的CPU寄存器的个数、结构是不一样的。

8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

8086CPU的AX、BX、CX、DX四个寄存器可分为两个8位寄存器来使用:

AX:AH和AL;

BX:BH和BL;

CX:CH和CL;

DX:DH和DL;

二.字在寄存器中的存储。

1. 字节:一个字节由8位组成, 可以存储在8位寄存器中。

2. 字:一个字由两个字节组成,分为高位字节和低位字节。

在16位寄存器中,AH存储高8位,AL存储了低8位。

三.几条常用的汇编指令

汇编指令

要完成的操作

Mov ax, 18

将18送入寄存器ax

Mov ah,78

将78送入寄存器ah

Add ax, 8

将寄存器ax中的数值加上8

Mov ax,bx

将寄存器bx中的数据送入到ax中

Add ax, bx

将ax和bx中的数据相加,结果存在ax中

注意:指令不区分大小写;

例如:

在32位寄存器的机器,结果为:1044C

但是在8086上会出现溢出,为044C,debug模拟的是16位机。

四.16位结构的CPU

 特性:

1.运算器一次最多可处理16位的数据。

2.运算器的最低宽度为16位。

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

最常见的16位机:8086CPU。

8086CPU有20位地址总线,可以传送20位地址,寻址能力达到了1MB。从8086内部结构来看,如果将地址从内部简单的发出,那么它只能送出16位的地址,表现出的寻址能力只有64KB。

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

(2)段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;

(3)地址加法器将两个16位地址合成一个20位的物理地址;

(4)地址加法器通过内部总线将20位物理地址送入输入输出控制电路;

(5)20位物理地址被地址总线传送到存储器。

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

所以8086CPU在访问内存时,要由相关的部件提供内存单元的段地址,和偏移地址,送入地址加法器合成物理地址。

8086CPU有四个段寄存器:

CS、DS、SS、ES。

五.CS和IP

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

在8086PC机中,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M*16+N单元开始,读取一条指令并执行。

8086CPU读取、执行一条指令的过程。

1. 初始状态:CS:2000H,IP:0000H。CPU将从内存2000H*16+0000H处读取指令执行。

2. CS,IP中的内容送入地址加法器,由地址加法器完成:

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

3.由地址加法器将物理地址送入输入输出控制电路。

4.输入输出控制电路将物理地址20000H送上地址总线。

5.从内存20000H单元开始存放的机器指令通过数据总线被送入CPU。

6.输入输出控制电路将机器指令送入指令缓冲器。

7.读取一条指令后,IP自动增加。以使CPU可以读取下一条指令。

 

修改CS、IP的内容:可以使用“jmp 段地址:偏移地址”

  相关解决方案