首页
社区
课程
招聘
[求助]一道简单的汇编题,大家帮着算下.
发表于: 2009-1-19 20:22 2869

[求助]一道简单的汇编题,大家帮着算下.

2009-1-19 20:22
2869
小弟认为自己做的没错,可是因为是初学,答案又与我做的不一样,还是问一下的比较好。(不问个究竟始终不放心啊)
请看题:
下面的程序实现依次用内存0:0~0:15单元中的内容改写为程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:
assume cd:codesg

codesg segment

        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

        dw 0,0,0,0,0,0,0,0,0,0       ;10个字单元用作栈空间

   start:  mov ax____
               mov ss,ax
               mov sp____

               mov ax,0           
               mov ds,ax
               mov bx,0
               mov cx,8
         s:   push [bx]
               __________
               add bx,2
               loop s
              
               mov ax,4c00h
               int 21h

codesg ends

end

我做的答案是:
第1空:mov ax,codesg
第2空:mov sp,20或者14h
第3空:pop cs:[bx]

网上找来一份答案,是一个叫 莫取网名 给的答案是
第1空:mov ax,cs
第2空:mov sp,1ah
第3空:pop cs:[bx]

1和3都没问题,第2空我认为是他错了。麻烦大家看看!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 100
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没人帮着说说啊。
2009-1-19 20:43
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
其实

mov sp, offset start

就可以了。

根据你的定义,start应该是24h,不是14h,因为0Ah个word(即14h个byte)的栈前面还有8h个word(即10h个byte)。所以,start = 14h + 10h = 24h

那个1ah,大概是把10个word的栈看成10个byte的栈了。
2009-1-19 22:00
0
雪    币: 100
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢了,我弄错了,你是对的,我在另外一个版块发布的也是24h
2009-1-19 22:13
0
游客
登录 | 注册 方可回帖
返回
//