在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键,则程序执行到我们设置的断点处会自动暂停


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

posted on   jack_Meng  阅读(6120)  评论(0编辑  收藏  举报

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩