(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)

2017年8月12号重编,添加实验记录。

个人总结

  • 工具下载
  • DOSBOX(dos模拟器)
  • debug(32位) 密码:rr2b
  • 说明:以上程序两系统通用,DOSBOX会根据设备自行下载对应软件。

windows版

  • 网上消息说windows32可以直接运行debug,这里没试过,自行脑补。不过可以确定的是 64 位是肯定不行的,需要DOSBOX模拟运行环境。
  • 软件下载好后,双击运行DOSBox,假设此时下载的debug.exe程序在d:/debug_exe文件夹
  • (图片自行脑补)在这个窗口输入:
    • mount c d:/debug_exe
    • 可以理解为目标cd:/debug_exe文件夹,也可以理解成,定义d:/debug_exe为目标文件夹.
    • 我记得这个c不一定要写c,可以写其他字母,验证过d,其他自行脑补,如果改成其他字母,下面对应跟着改。
  • 成功会打印
    • Drive C is mounted local directory xxxxx
  • 之后输入:c:,表示进入这个位置
    • 这个时候会有一些变化
    • 默认应该是:Z:\>_
    • 之后会变成:C:\>_
  • 最后,输入debug,执行debug程序,之后会等待你输入内容了。

Mac版

  • 网上消息说Mac版的debug需要 64 位才能运行,折腾我一下午没成, 你说气不气人!!最后,把上面windows用的debug往那一放,成了。
  • 这里debug.exe程序需要放在finder -> 前往 -> 个人下面,你也可以在这里创建文件夹debug_exe,再放进去。总之,有个坑是,我用的是中文版,所以Document中文显示文稿,我放在文稿里,敲路径的时候不可能用中文,所以敲Document,结果找不到。
  • 软件下载好后,双击DOSBox安装运行
  • (图片自行脑补)在这个窗口输入:
    • mount c ~/debug_exe
    • 理解方式上同.
  • 成功会打印
    • Drive C is mounted local directory xxxxx
  • 之后输入:c:,表示进入这个位置
  • 最后,输入debug,会等待你输入内容了(这里就是开头说的坑,debug不出来啊)。

补充

  • Parallels Desktop虚拟机的windows无法运行DOSBOX软件。

debug使用记录

(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第1张图片
Snip20170623_2.png
  • r 命令
  • r:查看 CPU 寄存器的状态
  • r ax:修改一个寄存器中的值
(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第2张图片
Snip20170623_6.png
  • d命令
  • d:查看Debug预设的地址处内容
  • d 段地址:偏移地址:查看从制定内存单元开始的 128 个内存单元的内容
  • 在上一个指令之后再使用d指令,将列出后续 128 个内存单元的内容
  • d 段地址:起始偏移地址 结尾偏移地址:查看制定范围的内容,亲测初始偏移地址是两位数会出错?
(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第3张图片
Snip20170623_11.png
  • e命令
  • e 起始地址 数据 数据 数据 ......:起始地址(段地址:偏移地址);改写内存中的内容。
  • e 段地址:偏移地址:然后光标停在.后面表示输入需要修改的内容;这里是按空格键结束该单元的修改;直接按空格键,表示不修改,直接结束该单元的修改;接着显示下一个内存单元的原始地址,并以同样的方式进行修改;按回车结束该操作。
  • 可以向内存中写入字符/字符串
(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第4张图片
Snip20170623_19.png
  • u 命令
  • u 初始地址:查看内存中机器码对应的汇编指令
(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第5张图片
Snip20170623_20.png
  • t 命令
  • t:执行CS:IP指向的指令,指令执行后,Debug会输出CPU中寄存器的状态。
(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第6张图片
Snip20170623_24.png
  • a 命令
  • a 初始地址:以汇编指令的形式在内存中写入机器码,直接回车,结束操作
  • a:从一个预设地址开始输入指令,直接回车,结束操作
(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第7张图片
Snip20170623_25.png

(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第8张图片
Snip20170623_26.png

(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第9张图片
Snip20170623_27.png

(重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac)_第10张图片
Snip20170623_31.png
假设CPU寻址上限为Max,地址总线的宽度为N,那么:Max=2^N,即cpu寻址范围为:0到2^N。 
例:地址总线为16位,侧Max=2^16=65535=0xFFFFh,     
即CPU得寻址范围为:0x0000h到0xFFFFh.

你可能感兴趣的:((重编)《汇编语言(第三版)》补充- 如何开启debug(windows/Mac))