如何在debug环境下更改自变量的值并再次运行原程序
求表达式Y= a * X * X + b * X + d的值,已知a、b、d分别存放在dataa、datab、datad字节单元,X存放在TABLE字节单元,结果Y放入RESULT字单元。 程序: data segment dataa db 1 datab db 3 datad db 5 table db 2 result dw ? data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov al,table mul al mul dataa cbw mov bx,ax mov al,table mul datab add bx,ax mov al,datad cbw add bx,ax mov result,bx exit: mov ah,4ch int 21h code ends
end start
单步执行后的结果
在DEBUG下多次修改X的值,观察执行结果Y
G命令运行程序命令 命令格式: G[=起始地址]第一断点地址] 第二断点地址]… 调试过程中,可以利用G命令运行程序,观察结果的正确性,或者设置断点,. 利用G命令观察程序运行到某一位置是否正确,G命令最多可以设置10个断点, 当程序运行置断点时,停止执行,并显示当前所有寄存器和标志位的内容,以及 下一条将要执行的指令。 如果G命令无起始地址,则从当前CS:IP内容为开始运行。 根据此内容 更改内存单元中X的值 根据前面的命令ip可知道,我们要再次执行0至26ip的命令
可见,修改成功
验算:1 * 3 * 3 + 3 * 3 + 5 = 1 * 16 + 7