11111111111111
数据不能直接跟段寄存器进行交互的,要经过通用寄存器。
题目:将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实质上时一种内存传送指令;
学员评论
乐之山南2014-08-05
Metrry2014-05-21