王爽汇编1-2

每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自己的机器指令集,也就是机器语言。

汇编语言由以下3类指令组成:
1. 汇编指令: 机器码的助记符,有对应的机器码。
2. 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
3. 其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
汇编语言的核心是汇编指令,它决定了汇编语言的特性。

要想让一个CPU工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是我们平时所说的内存。

指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU在工作的时候把有的信息看作指令,有的信息看作数据,为同样的信息赋予了不同的意义。

存储器被划分成若干个存储单元,每个存储单元从0开始顺序编号。

CPU要想进行数据的读写,必须和外部器件进行下面3类信息的交互:
1. 存储单元的地址(地址信息)
2. 读或写的命令(控制信息)
3. 读或写的数据(数据信息)
分别对应地址总线、控制总线、数据总线。

一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个存储单元。
数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个8位二进制数据,16根数据总线一次可传送两个字节。
有多少根控制总线,就以为着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。

每一个CPU芯片都有很多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个CPU可以引出3种总线。

计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制。CPU对外部设备都不能直接控制,如显示器、音响、打印机等。直接控制这些设备进行工作的是插在扩展插槽上的接口卡。扩展插槽通过总线和CPU相连,所以接口卡也通过总线同CPU相连。CPU可以直接控制这些接口卡,从而实现CPU对外设的间接控制。简单地讲,就是CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设进行工作。

一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。
内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。
运算器进行信息处理。
寄存器进行信息存储。
控制器控制各种器件进行工作。
内部总线连接各种器件,在它们之间进行数据的传送。

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

通用寄存器:
8086CPU的所有寄存器都是16位的,可以存放两个字节。AX BX CX DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

ax寄存器可以划分为ah和al,但是eax没有对高16位进行命名。

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

CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。
8086CPU有20位地址总线,8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。

当8086CPU要读写内存时:
1. CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址。
2. 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件。
3. 地址加法器将两个16位地址合成为一个20位的物理地址。
4. 地址加法器通过内部总线将20位物理地址送入输入输出控制电路。
5. 输入输出控制电路将20位物理地址送上地址总线。
6. 20位物理地址被地址总线送到存储器。
地址加法器采用 物理地址=段地址x16+偏移地址 的方法合成。
物理地址=基础地址+偏移地址。
基础地址=段地址x16

在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址x16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。
有两点需要注意:
1. 段地址x16必然是16的倍数,所以一个段的起始地址也一定是16的倍数。
2. 偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。
CPU可以用不同的段地址和偏移地址形成同一个物理地址。

8086CPU有4个段寄存器:CS DS SS ES

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

8086CPU的工作过程:
1. 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器。
2. IP=IP+所读取指令的长度,从而指向下一条指令。
3. 执行指令。转到步骤1,重复这个过程。
在8086CPU加电或复位后,CS和IP被设置为CS=FFFFH,IP=0000H,即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行。

修改CS、IP:
jmp 段地址:偏移地址   同时修改CS和IP
jmp 寄存器   只修改IP

debug命令:
r: 查看、修改寄存器
d: 查看内存中的内容
e: 修改内存中的内容
u: 翻译为汇编指令
t: 执行CS:IP指向的内存单元
a: 以汇编指令的形式向内存中写入指令

猜你喜欢

转载自blog.csdn.net/sumaoqing123/article/details/87561978