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