小甲鱼关于push,pop指令的一个编程题

编程:
(1)将10000H~ 1000FH这段空间当作栈,初始状态是空的;
(2)设置AX=001AH,BX=001BH ;
(3)将AX、BX中的数据入栈;
(4)然后将AX、BX清零;
(5)从栈中恢复AX、BX原来的内容。
设计命令:

  1. mov ax,1000
  2. mov ss,ax[段地址寄存器不能直接接触数据,必须通过通用寄存器来接触数据]
  3. mov sp 10[这个我遗忘啦,初始化栈顶操作  不过没影响效果]
  4. mov ax,1a
  5. mov bx,1b
  6. push ax
  7. push bx
  8. mov ax,0
  9. mov bx,0
  10. pop bx[遵循先进后出原则]
  11. pop ax

从上面的程序我们看到,用栈来暂存以后需要恢复的寄存器中的内容时,

出栈的顺序要和入栈的顺序相反,因为最后
入栈的寄存器的内容在栈顶,所以在恢复时,要最先出栈。
 

push、pop实质上就是一 种内存传送指令,可以在寄存器和内存之间传送数据,

与mov指令不同的是,push和pop指令访问的内存单元的地址不是在指令中给出的,

而是由SS:SP指出的。

同时,push和pop指令还要改变SP中的内容。
push:先放入数据,再sp=sp-2;

pop:先拿出数据,再sp=sp+2;

 

你可能感兴趣的:(汇编语言,push,pop指令编程题)