• 在Debug中使用断点调试程序


    我最近在学习汇编的程序,所以很多都需要动手写点代码去测试,如果是测试三五行代码的还比较简单,可以在debug中直接按T进行单步调试,但是到后来调试的代码越来越复杂,越来越长,如果再使用单步调试不知道要按键按到驴年马月去,之前用过一些开发其他的高级语言时的IDE,里面都有设置断点和单步调试的功能,所以我也就想在我的程序中也增加断点的功能,让程序执行到断点然后就停止,这样也方便查看程序中数据的变化。

    由于本人刚刚学习汇编,使用最笨拙的方法去实现断点功能。

    功能分析:学汇编的对标志位都不陌生,里面很多都程序运行密切相关,这里就是要用IF和TF标志位,分别是中断和单步执行的控制,所以只要设置这两位为1,程序就会暂停。下面就以一个简单的程序设置断点来说明

    程序代码:

    assume cs:code
    
    stack segment
    db 30h dup(0)
    stack ends
    
    code segment
    start:     
        mov ax,3
        mov bx,1
        mov cx,5
        s0:
        add ax,bx
        call breakPoint     ;在此处设置断点暂停
        loop s0
        mov ax,4c00h
        int 21h
    
        
    breakPoint:
        push bx
        pushf
        pop bx
        or bh,3        ;这里可以增加判断,例:当cx为100的时候再设置断点
        push bx
        popf
        pop bx
        ret

    使用说明:

    在需要设置断点地方调用call breakPoint,编译-链接-debug执行,在debug中直接按g键,则程序执行到我们设置的断点处会自动暂停


    你可以根据上面的说明,自己改进下,比如条件断点等功能。

  • 相关阅读:
    Celery最佳实践(转)
    我希望知道的关于Django的11件事(转)
    Celery和Rabbitmq自学
    我眼中的各种编程语言(转)
    linux 的nohup & 和daemon 总结(转)
    模糊测试之AVI文件分析
    微信Netting-QRLJacking分析利用-扫我二维码获取你的账号权限
    一个Unix内核级别漏洞(一)
    一次对SNMP服务的渗透测试
    定位日站大法之-社会工程学
  • 原文地址:https://www.cnblogs.com/mq0036/p/5157031.html
Copyright © 2020-2023  润新知