补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中。
补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中。mov ax,2000H
mov ds,ax //设置数据段指向2000:
mov ax,1000H
mov ss,ax //将栈顶指向1000:0
mov sp,0
pop //???
pop
pop
pop
pop
pop
pop
pop
这个pop 是将1000:0栈顶的字数据放到 2000:E 数据字单元中吧?
理解起来怎么那么懵呢?
你的理解是对的。
主要是因为要求逆向复制,所以需要稍微调整一下顺序,你能理解,说明你已经掌握了。 ss是栈段,FIFO先进后出,数据是倒着存的,第一个数据在栈底位置,而最后一个数据在栈顶位置;
所以逆序需要从栈顶位置开始取,即sp应该为0
ds是数据段,从底地址到高地址存储,逆序需要从底到顶存储,所以pop从开始存放栈中的数据。 先进后出的问题我懂了,不懂的是入栈的时候栈段是2000h,出栈的时候为什么从栈段1000h出栈,望解答,不胜感谢
入栈:
mov ax,1000H
mov ds,ax
mov ax,2000H
mov ss,ax
mov sp,10h
push
......
出栈:
mov ax,2000H
mov ds,ax
mov ax,1000H
mov ss,ax
mov sp,0
pop
......
页:
[1]