打开DOSBox,首先对工作目录做一个挂载
mount c: d:\asm
然后进入虚拟目录c:
最后直接输入debug
前面有个“-”,这是debug的提示符
直接输入r,即可查看寄存器的值
例如输入r ax,首先出现的是AX 0000,表名AX寄存器当前的值是0000,
而下面那一行出现了一个:,在这个地方直接输入你想要更改的数值,例如FFFF
再次使用r命令查看,可以看到AX寄存器的值已变为了FFFF
PS:r ax和rax,中间有没有空格都是一样的
接着输入d,还可以看到再往后面的128字节的内容,每一行是16个字节,总共是8行
以d 2000:0000为例
以d 2000:0 4f和d 2000:0 f为例
以e 2000:0000 65 66 67 68 69 70为例
可以看到右侧其实也就是左侧的十六进制对应的ASCII字符
①首先e 段地址:偏移地址,回车
②然后自动弹出了给定地址后第一个字节的值,此时可以输入自己想要更改的值,
③如果要继续修改,就按空格,重复上一步的操作
④如果修改结束,可按回车
例如,我们想把2000:0000后面的六个字节的内容变为abcdef
为了验证u命令,首先要使用e命令将机器指令写入内存
e 2000:0 b8 23 01 b8 03 00 89 d8 01 d8
然后使用d命令查看2000:0后16个字节的内容,确认输入无误,d 2000:0 f
使用u 2000:0将内存中的机器指令翻译成汇编指令
通过这个例子我们可以直观的看到,在内存中指令和数据没有什么区别,都只是数字而已
首先用r命令查看寄存器中的内容
然后用a命令,a 073f:100,回车
回车后输入汇编指令,
每输入一行指令就回车。输入完毕的那次回车两下。
可以通过d命令查看内存中的机器指令
可以使用u命令来查看代码
直接输入t,执行CS:IP处的指令
原文:https://www.cnblogs.com/cyx-b/p/12730119.html