从零开始学汇编

从零开始学汇编

5 (96人评价)
  • 课时:(62)

  • 学员:(2501)

  • 浏览:(146705)

  • 加入课程

第三章 寄存器(内存访问)06的笔记

相关课时: 笔记详情:

数据不能直接跟段寄存器进行交互的,要经过通用寄存器。

题目:将10000H-1000FH这段空间当做栈,初始状态是空的,将AX。BX.DS中的数据入栈。

解答:

MOV AX,1000H

MOV SS,AX

MOV SP,0010H:因为栈不空,所以SP=0010H。指针指向栈顶加1

PUSH AX

PUSH BX

PUSH DS

 

我们要十分清楚的是:PUSH和POP指令同MOV指令不同,CPU执行MOV指令只需要一步操作,就是传送,而执行PUSH和POP指令却需要两步操作。

执行PUSH时:

先改变SP,后向SS:SP处传送。

执行POP时:

先读取SS:SP处的数据,后改变SP

 

PUSH。POP等栈操作指令,修改的只是SP,也就是说,栈顶的变化范围最大为:0-FFFFH,也就是64KB的范围。(偏移地址16位的CPU)

 

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

 

用栈来暂存以后要恢复的寄存器的内容时,寄存器出栈的顺序要和入栈的顺序相反。

 

PUSH和POP实质上时一种内存传送指令;

0 0