1.debug的常用命令
1.r命令
查看、修改CPU中寄存器的值
-r :查看寄存器的值
-r cs :修改寄存器cs的值
2.D命令
查看内存中的内容
1.-d 段地址:偏移地址
-d 1000:01 查看内存100001处的内容
-d 段地址:偏移地址 结尾偏移地址
-d 1000:0 9 查看100000 - 100009
3.E命令
改写内存中的内容
1.-e 1000:10 0 1 2 3 从1000010开始向内存中写入0123数据, 如果写入内存的数据是字符其实实际上存入内存中的是其对应的ascll码
4.U命令
查看机器码对应的汇编指令
-u 1000:0 查看1000:0 处的机器码对应的汇编指令
5.T命令
执行当前的指令
执行cs:ip 在指向的内存单元中的指令,并且使cs:ip指向下一条指令
6.A命令
以汇编指令的形式在内存中写入机器指令
-a 1000:0
1000:0000 mov ax,1
1000:0003 mov bx,2
1000:0006 add ax,bx
2.将机器码为b8 20 4e, 对应的汇编指令为mov ax,4E20H的指令,使用汇编指令写入内存并且执行
第一种方法: 使用e指令向内存中写入指令(从coding的角度来说,写入的是机器语言,也就是机器码)
1.使用e指令,修改内存单元中的内容,改为指令的机器码
2.机器码写入成功
3.修改cs和ip,使其指向的内存单元是我们刚写入指令的内存单元
4.重新指向cs和ip成功
5.使用t指令执行,内存单元中的指令,观察ax的值,发现已经执行成功
第二种方法: 使用a指令向内存中写入指令(从coding的角度来讲, 写入的是汇编语言)
1.使用a指令,向内存单元中直接写入指令,然后debug将汇编语言转换为机器语言写入到内存中(这样就是方便我们修改指令,不用存入机器码)
2.使用-t执行指令,也是执行成功
3.栈操作
1.push 寄存器 //入栈
2.pop 寄存器 //出栈
4.dosbox下使用debug程序