汇编基础——8086CPU的运行方式

xiaoxiao2021-02-28  27

CPU内:

运行器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,进行信息传输。

注:不同的CPU寄存器的个数、结构是不同的。

 

A、寄存器

寄存器是程序员主要能进行读写操作的部件。通过寄存器来实现对CPU的控制。8086所有的寄存器都是16位(16个二进制位)的,可以存放2个字节。

8086总计14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW(FLAGS)

通用寄存器:(通常用来存放一般性的数据)

AX、BX、CX、DX又称数据寄存器。数据寄存器可以一分为二、变成两个8位的寄存器。前面的AH为高八位,后面的AL为低八位。

AX又称累加器、BX基址寄存器、CX计数寄存器、DX数据寄存器。

SP、BP、DI、SI又称地址指针变址寄存器。只能按16位寄存器。SP栈顶、BP栈内数据地址,是对堆栈的操作。 IP指向的是指令地址的段内地址偏移量。IP指向当前需要取出的指令字节。IP取出后自动加一。转移返回能对IP进行改变。 标志寄存器FLAGS

    

用于控制运算的状态。如:加法溢出等。

段寄存器(代码段、数据段、堆栈段

代码(指令):计算机执行何种操作。

数据(字符、数值):程序执行的对象。

堆栈:保存返回地址和中间结果。

 

物理地址的寻址:段地址 x 16 + 偏移地址====物理地址:基础地址+偏移地址

注意:不能短地址加偏移地址不能参生溢出。

8086CPU内部寄存器皆为16位,而8086一次寻址能力可达1M=2^16=655366(64k)=16位地址总线

即:引入分段(获得20位地址),一个段是存储器的一个逻辑单位,长度可达64k,每个段是连续的存储空间。而地址空间是一个20位的地址。所以“段地址 x 16”...

几个段可以互相重叠,也可以指向同一个空间。

 

几条汇编指令:

mov————右边的放入左边。

add————两个相寄存器相加然后把结果放到左边的寄存器中。

sub————两个相寄存器相减然后把结果放到左边的寄存器中。

栈:PUSH入栈、POP出栈。(先进后出,就进先出。)

 

组合:

SS:SP                    堆栈段

DS:[address]        数据段

CS:IP                    代码段

 

B、内存寻址方式

[bx]

"[]"—代表了内存地址单元

 

loop

代表循环:happy代表循环点,cx代表循环次数(每次loop时,cx自动减一,当cx等于0时退出循环)

mov cx,9 mov ax,2 happy: add ax,ax loop happy

 

内存寻址方式

 

inc—自动加1

[]、bx、si、di、bp

EA:

SA:

错误的寻址方式:

si + di bx + bp

 

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2632247.html

最新回复(0)