汇编网首页登录博客注册
kingwrcy的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2009-04-11 09:56] 监测点6.1

1.
assume cs:codesg

codesg segment

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

start:  mov ax,0

    mov ds,ax

    mov bx,0

 

    mov cx,8

s:  mov ax,[bx]

    mov cs:[bx],ax    ;此条指令为所填指令

    add bx,2

    loop s

 

    mov ax,4c00h

    int 21h

codesg ends

end start



2.

assume cs:codesg

codesg segment

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

    dw 0,0,0,0,0

start:

    mov ax,cs     ;cs为所填第一空

    mov ss,ax

    mov sp,1ah    ;此条指令为所填第二空

    mov ax,0

    mov ds,ax

    mov bx,0

    mov cx,8

s:

    push [bx]

    pop cs:[bx]    ;此条指令为所填第三空

    add bx,2

    loop s

    

    mov ax,4c00h

    int 21h

codesg ends

end start

ps:2个题目的要求一样都是要求把0:0-0:15的内容覆盖程序的内容.看题目的代码.可以看到第一题没有用栈.第二题用到了.但是第二题所提供的栈空间只有5个字.但是题目要求的是改写8个字空间的内容.所以不能按常规的把8个字空间内容push进栈后再一个个的pop出来.我们可以采取'一进一出'的方法.即先push进去,随后马上pop出来.这样的话只占用一个字的栈空间就可以完成题目的要求.

注意内存是从0开始算的.我刚开始做的时候从1开始算了...结果可想而知..
评论次数(1)  |  浏览次数(621)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2009-04-15 15:44  ]

嗯,说的很对。这里的栈操作就是一个一个的完成数据移送。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码