第三章:寄存器(内存访问)06
让编程改变世界
Change the world by program
push、pop指令
问题3.7
编程:将10000H~1000FH 这段空间当作栈,初始状态是空的,将 AX、BX、DS中的数据入栈。 思考后看分析。 [caption id="attachment_300" align="aligncenter" width="300"] push、pop指令[/caption]问题3.8
编程: (1)将10000H~1000FH 这段空间当作栈,初始状态是空的; (2)设置AX=001AH,BX=001BH; (3)将AX、BX中的数据入栈; (4)然后将AX、BX清零; (5)从栈中恢复AX、BX原来的内容。 思考后看分析。 [caption id="attachment_301" align="aligncenter" width="300"] push、pop指令[/caption] 从上面的程序我们看到,用栈来暂存以后需要恢复的寄存器中的内容时 ,出栈的顺序要和入栈的顺序相反,因为最后入栈的寄存器的内容在栈顶 ,所以在恢复时,要最先出栈。问题3.9
编程: (1)将10000H~1000FH 这段空间当作栈,初始状态是空的; (2)设置AX=002AH,BX=002BH; (3)利用栈 ,交换 AX 和 BX 中的数据。 思考后看分析。 [caption id="attachment_302" align="aligncenter" width="300"] push、pop指令[/caption]问题3.10
我们如果要在10000H处写入字型数据2266H,可以用以下的代码完成:mov ax,1000H
mov ds,ax
mov ,ax,2266H
mov [0],ax
看题目: 补在10000H处写入字型数据2266H。 __________ __________ __________ mov ax,2266H push ax 要求:不能使用“mov 内存单元,寄存器”这类指令 思考后看分析。 我们看需补全代码的最后两条指令,将ax中的2266H压入栈中,也就是说,最终应由push ax将2266H写入10000H处。 问题的关键就在于:如何使push ax访问的内存单元是10000H。 Push指令是入栈指令。(注意执行过程) 完整的程序:mov ax,1000H
mov ss,ax
mov sp,2
mov ax,2266H
push ax