首页
社区
课程
招聘
汇编返回问题[求助]
2006-7-11 13:17 3444

汇编返回问题[求助]

2006-7-11 13:17
3444
code        segment
       
        assume        ds:data, cs:code,ss:sseg
       
        start:
       
        main        proc       

                     push        ds     ;开始为 14CD
                xor        ax, ax
                push        ax
       
        ;set ds register to current data segment
       
                mov        ax, data      
                mov        ds, ax      ; 现在为14DD
       
        ;Main part of program code here
       
                lea        bx, buffer
                mov        flag, 0
next:                mov        ah, 1
                int        21h
                test        flag, 01h
                jnz        follow
                cmp        al, 20h
                jnz        exit
                mov        flag, 1
                jmp        next
follow:                cmp        al, 20h
                jz        exit
                mov        [bx], al
                inc        bx
                jmp        next
               
                       
exit:                ret
        main        endp
code        ends

        end        start       

以上代码,运行后不能返回dos,用debug跟踪 ret返回到 14DD:0000,
也就是 pash ds这句,
改成下面的样子后正常返回。

注释掉这里                ;push        ds
                ;xor        ax, ax
                ;push        ax
       
                中间相同部分省。。。。。。               
exit:                mov        ah,4ch
                int        21h
清华大学 IBM-PC汇编语言程序设计第二版上面的例子,晕啊

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
smple 2006-7-11 20:03
2
0
问题找到了,这个是个近过程,ret的时候只弹出 ip(eip),不弹出cs,不好意思,太菜了

main  proc   far   <---------标明远过程就可以了
游客
登录 | 注册 方可回帖
返回