Debugでブレークポイントデバッガを使用する

1713 ワード

私は最近アセンブリのプログラムを勉强しているので、多くの场合、コードを书いてテストする必要があります.もし3、5行のコードをテストするのは简単であれば、debugの中で直接Tを押して単一のステップのデバッグを行うことができますが、后でデバッグするコードはますます复雑になって、ますます长くなって、もし単一のステップのデバッグを使うならば、ボタンをロバ年马月に押すことを知らないで、前に他の高级な言语を开発する时のIDEを使ったことがあります.ブレークポイントとワンステップデバッグを設定する機能が入っているので、私のプログラムにもブレークポイントの機能を増やして、プログラムをブレークポイントに実行して停止させたいと思っています.そうすれば、プログラム中のデータの変化を簡単に見ることができます.
私はアセンブリを習ったばかりなので、最も不器用な方法でブレークポイント機能を実現します.
機能分析:学習アセンブリのロゴビットはよく知られていないが、中には多くのプログラムが密接に関連している.ここではIFとTFロゴビットを使用し、それぞれ中断と単一ステップ実行の制御であるため、この2つを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キーを押すと、プログラムが設定したブレークポイントに実行されると自動的に一時停止します.
上記の説明に基づいて、条件ブレークポイントなどの機能を自分で改善することができます.