您的位置:首页 > 其它

debug 常用命令

2009-06-09 06:59 204 查看
1)-r(register) 查看寄存器当前值(debug将程序加载入内存,cx为程序长度,cs当前执行程序段地址,ip当前执行程序偏移地址,ds整个程序所在区的段地址:dos中留出256字节(100H)的psp,所以cs=ds+10)

ex: -r ax

:
//修改寄存器值

2)-d(dump)查看内存内容 段地址:
偏移地址起 [偏移地址末]

ex: -d 1000:0//1000:0~1000:7F从指定内存单元开始共80H=8*16=128个内存单元的内容

-d//默认接着1000:80一直往下看

-d 0fff:10 10//同-d 0100:f000 f000, 都表示了10000H这个物理地址的内存内容

3)-e(enter)改写内存内容 起始地址
数据 数据, e与a相对应,a为写好认的汇编语句

ex:-e 1000:0 0 1 2
3

-d 1000:0 f//查看修改情况

-e 1000:0//enter

://输入改写数据,空格,下一个,enter退出

-e
1000:0 ‘a’ ‘b’’c’//可写入字符

-d 1000:0 2//61,62,63

写机器码与a对应

机器码
对应的汇编指令

b80100
mov ax, 0001

b90200
mov cx, 0002

01c8
add ax, cx

ex: -e 1000:0 b8
01 00 b9 02 00 01 c8

-d 1000:0 1f//查看内容 1000:0000~1000:0020

-u 1000:0//

1000:0000 b80100
mov ax,
0001

1000:0003 b90200
mov cx,
0002

1000:0006 01c8

add ax, cx

-r//查看cs ip状态

-r cs

cs XXXX//cs当前是某个值

:1000//修改为1000

-r ip

ip XXXX//ip 当前是某个值

:0//修改为0,把当前命令指向刚写入的1000:0中的命令

-r

-t//执行1条命令,此时ax=0001, ip=ip+3(因为mov ax, 0001指令长度为3,
cs:ip指向下一条指令) ,往下-t类推

4)-u(unassemble)将内存中的机器指令翻译成汇编指令

分3部分, 每一条机器指令的地址、机器指令、机器指令所对应的汇编指令

5)-t(trace)执行一条机器指令

6)-a(address)以汇编指令的格式在内存中写入一条机器指令,debug把键入的数字默认为十六进制,要键入十进制则后加D,入100D

e命令写入机器指令不方便, a直接以汇编形式写入机器指令

-a

1000:0000 mov ax,1

1000:0003 mov bx,2

1000:000f//enter结束

9)-p 执行int 21, 显示‘Program
terminated normally’,返回到debug中,表示程序正常结束

-q退出debug
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: