【汇编语言】 第三章 寄存器(内存访问)

字单元

即存放一个字型数据(16位)的内存单元, 由两个地址连续的内存单元组成。高地址内存单元存放字型数据的高位字节,低地址单元存放字型数据的地位字节。

DS和【adress】

8086CPU中的DS寄存器,通常用来存放要访问数据的段地址。比如我们要读取10000H单元的内容,可以用如下的程序段进行

mov bx,1000H

mov ds,bx

mov al,[0]

"[...]"中的0表示内存单元的偏移地址,指令执行时,8086cpu会自动从ds中取出段地址

8086cpu不支持将数据直接送入段寄存器的操作,ds是一个段寄存器,所以

mov ds,1000H纸条指令非法,需要用一个寄存器来进行中转。

数据段

cpu提供的栈机制

push ax  将寄存器ax中的数据送入栈

pop ax  从栈顶取出数据送入ax

8086cpu入栈和出栈都是以字位单位进行的

任意时刻,SS,SP指向栈顶元素。push指令和pop指令执行时,CPU从SS和SP中得到栈顶的地址

栈空,SS:SP指向栈空间最高地址单元的下一个单元

8086CPU,入栈时,栈顶从高地址向低地址方向增长

mov ax, 1000H
mov ds, ax ;内存单元的段地址要放在ds中
push [0]    ;将1000:0处的字压入栈中
pop[2]      ;出栈,出栈的数据送入1000:2处

push指令执行步骤

  1.  sp = sp - 2
  2. 向ss:sp指向的字单元中送入数据

pop指令执行步骤

  1. 1.从ss:sp指向的字单元中读取数据
  2. 2.sp=sp+2

任意时刻,ss:sp指向栈顶元素

8086cpu只记录栈顶,栈空的大小我们自己管理。

原文地址:https://www.cnblogs.com/hulian425/p/13901357.html