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

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)

汇编基础——8086CPU的运行方式_第1张图片

汇编基础——8086CPU的运行方式_第2张图片

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

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

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

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

    汇编基础——8086CPU的运行方式_第3张图片

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

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

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

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

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

 

物理地址的寻址:段地址 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

汇编基础——8086CPU的运行方式_第4张图片

EA:

SA:

汇编基础——8086CPU的运行方式_第5张图片

错误的寻址方式:

si + di
bx + bp

 

 

 

 

 

 

你可能感兴趣的:(汇编)