|
2鱼币
本帖最后由 s0512 于 2013-5-27 22:44 编辑
(1) 补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中。逆序复制的含义如图3.17所示(图中内存里的数据均为假设)。
图3.17 逆序复制示意图
mov ax, 1000H
mov ds, ax
mov ax, 2000H
mov ss, ax
mov sp, 0010H
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
一直弄不明白这个是怎么个运算的,数据混合在一起真不好弄啊!!
================
mov ax, 1000H
mov ds, ax
第一步,得到DS的值:
DS=1000
=================
mov ax, 2000H
mov ss, ax
mov sp, 0010H
第二步空的栈的顶部
======================
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
然后是不是后面的这些数据是怎么从10000H给移动到20000H里面去的?
=====================================
我迷惑呢
然后我看了下前面的章节(3.9 push 丶pop指令 )
mov ax, 1000H
mov ds, ax
push [0]
这样就可以压栈
然后怎么去的20000H的列表呢····
我迷惑啊迷惑!!!网上搜啊搜的也没找到
仔细在那么一想···麻麻的,上面第二步,不有那个什么空堆栈的地址??难道就····
把10000H的字取出来在放到20000H去?姑且这么想吧····
混乱混乱!!!
(2) 补全下面的程序,使其可以将 10000H~1000FH 中的8个字,逆序复制到20000H~2000FH中。
mov ax, 2000H
mov ds, ax
mov ax, 1000H
mov ss, ax
mov sp, 0000H
pop [E]
pop [C]
pop [A]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]
然后这里也跟上题一样的分析
========================
mov ax, 2000H
mov ds, ax
得到DS的值
DS=2000
==========================
mov ax, 1000H
mov ss, ax
mov sp, 0000H
空栈的顶部
==========================
因为是POP嘛
所以要从上往下?
我也不知道什么分析了······
不明白!!
这种数据类型公用的,应该怎么个运算流程呢?
求大神大牛,指导,给个思路!!
小朋友不才,问题实在太多了
|
最佳答案
查看完整内容
push的时候是从大到小的,而你想把1000的逆序复制到2000,那就只要顺序的把1000的数据push进去2000:10 - - - -2000:0了
push操作时,是先sp = sp - 2,然后再mov
|