本文主要是介绍《汇编语言》第3版 (王爽)检测点3.2解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第三章 3.2解析
(1).补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H-2000FH。逆序复制的含义如图3.17所示(图中内存里的数据均为假设)。
mov ax,1000H ;将1000H放入AX寄存器中
mov ds,ax ;将AX寄存器中的内容放入DS寄存器中,这时候DS中存放的即为1000H,通过此指令我们知道数据段寄存器DS中存放的正是要被复制数据的内存单元的段地址mov ax,2000H ;将2000H放入AX寄存器中
mov ss,ax ;将AX寄存器中的内容放入SS寄存器中,即栈的段地址
mov sp,0010H ;将0010H让入寄存器中,此时栈顶地址为20010Hpush [0] ;通过前面的指令我们知道DS中存放的是1000H,这时候加上此处的偏移地址,可以算出入栈的数据正是内存单元地址为10000H中的数据即为0123H,而前面我们已经将栈顶设置为20010H,根据入栈指令push的执行顺序,先将sp-2变成2000EH,然后将0123H送入2000EH处,实现了逆序存放
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
(2).补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H—2000FH中。
此程序和上面的程序正好相反,由入栈变成了出栈,那么此时只需要修改栈顶地址即可。
mov ax,2000H
mov ds,axmov ax,1000H
mov ss,ax
mov sp,0000Hpop [E]
pop [C]
pop [A]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]
这篇关于《汇编语言》第3版 (王爽)检测点3.2解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!