该实验是在windows系统中进入DOS系统来进行实验的。
用到的dos系统下的程序为debug.exe.
debug.exe程序
链接:https://pan.baidu.com/s/1jWFhRxACiqyKoSHqELUAWA
提取码:478f
另外64位的win10已经删除了debug.exe,所以我们需要下一个32位dos模拟器(我用的是dosbox)配合上边的debug.exe,进行本次实验。
什么是debug
debug是windows和dos都提供的实模式(8086)程序的调试程序。该程序可以让我们通过命令查看CPU各种寄存器的内容,内存的情况,以及在机器码级跟踪程序的运行。
debug命令很多,本次实验介绍如下命令:
r:register,查看和修改CPU内寄存器内容
d:dump,转储,转存。因为程序在计算机中运行时,在内存、CPU、I/O等设备上的数据都是动态的(或者说是易失的),也就是说数据使用完或者发生异常就会丢掉。如果我想得到某些时刻的数据(有可能是调试程序Bug或者收集某些信息),就要把他转储(dump)为静态(如文件)的形式。否则,这些数据你永远都拿不到。
e:enter,将数据输入到内存中指定的地址
u:unassemble,反汇编, 把内存单元数据翻译成汇编指令
t:trace,跟踪执行,默认执行cs:ip指向的指令
a:aseemble 汇编,可以用它以汇编指令的形式在内存中写入机器指令
dosbox和debug
教程都有,这里解释下文件
.bat批处理的文件 就是在里边预先写一些命令 然后批执行。
另外注意 ,在.bat文件中,路径如果含有空格 例如c:/program files 这种 应该把路径用英文双引号括起来 ,否则会报错,类似找不到’C:\Program’路径
实验内容
实验内容简单,主要是上边总结了相关知识。
需要注意一个问题:
从主板上ROM查出来的ROM生产日期是01/01/92,是因为我们用的是虚拟的dos环境,应该是虚拟出来的主板日期。(不一定正确,dos环境是虚拟出来的,但主板rom是真实的,读里边的内容也该是真实的把? 应该与dosbox怎么实现的有关把。。。)