关于检测点3.2一个纠结的问题,已经迷糊了
(1)补全下面的程序,使其可以将10000H----1000FH中的8个字,逆序复制到20000H---2000FH中。
mov ax,1000H
mov ds,ax
mov ax,2000H
mov ss,ax
mov sp,10
push
push
push
push
push
push
push
第一题我的理解是,将20000H---2000FH看成一个栈段,push ,是将数据1000:0处数据0123,推入到20000H---2000FH的2000:E处
push是将数据1000:2处数据2266,推入到20000H---2000FH的2000:C处。剩下的以此类推,完成逆序复制
我觉得第二题的题目是不是错误了。我觉得应该是补全下面的程序,使其可以将20000H----2000FH中的8个字,逆序复制到10000---1000FH中。
我的代码是 mov ax,2000H
MOV ds,ax
mov ax,1000H
mov ss,ax
mov sp,10
POP
POP
POP
POP
POP
POP
POP
POP
第二题我的理解是将10000H---1000FH看成一个栈段,POP,是将数据2000:0处数据1133,推入到10000H---1000FH的1000:E处
以上就是我的理解,但是,我总感觉我这种想法是错的,而且越想越糊涂,有没有大神帮我指正,详细的帮我讲解一下 我的理解,书里应该是第二个题目写错了,应该就是你说的从2000放到1000,还有就是第二个因为是要Pop出栈的存储数据,所以sp 应该是 0 pop 「e」是将栈sp指针出的数据 存入数据ds段 2000eH处,对吗 [……]偏移地址
段前缀默认ds mov sp,10 有问题吧
我觉得是 mov sp,0
pop 就是 把 1000:sp sp+1 的数据复制到 2000:e f 之中,然后 sp = sp + 2,即 sp = 2
下一次
pop 1000:2 3 -复制-> 2000:c d , sp += 2, sp = 4
... ...
是这个过程吧,mov sp,10 是不是就有问题? 题目没错
要注意POP和PUSH命令对SP的转变,PUSH SP=SP-2,POP SP=SP+2,所以第二题SP,0
页:
[1]