文本文件中的机器码表面看起来是十六进制数字(例如:e8 51 0 e8 3e 1 e8 df 0 b8),但其实它们都是字符数据。那么如何才能将它们一大批一次性的贴进内存中,且使其成为与其字符内容一致的真正的十六进制数值呢? 方法如下:
第一步:先用windows下的记事本编辑这些本质上是字符的“机器码”,令它们任何两个十六进制数字之间有且仅有1个空格符,第1个十六进制数字的前面不能有任何空格,最后一个十六进制数字的后面只有一个空格或一个回车。为什么要如此严格的编辑呢?因为多一个或少一个空格都可能令我们的工作失败,因为我们要用到debug下的e命令,而e命令每修改完一个内存字节单元的内容都要按一下空格键才能转入下一个内存单元的修改。我们在向内存贴进的字符流中,e命令会检测每一个空格,我们要让贴进的每一个十六进制数字不超过两位,要每贴进一个十六进制数字紧跟着就贴进一个空格符,事情就这么简单,我们一次性贴进一大批“机器码”就是“一个两位以内的十六进制数字——〉一个空格符”的模式的不断重复。
第二步:将编辑好的“机器码”全选后复制。打开windows下的DOS,并使它处于窗口状态(也就是不要全屏)。进入到debug下,输入e100然后回车(表示要从地址100h处开始编辑内存内容),例如:
c:\debug
-e100
186E:0100 F8.
然后用鼠标点击一下DOS窗口工具栏上的“粘贴”按钮,于是我们便将保存在剪贴板中的字符性质的“机器码”粘贴进从地址100h开始的内存中,而且e命令保证每一个字符性质的十六进制数值都转换成真正的十六进制数值后存放进相关内存字节单元中。
当然,转换成真正机器码的内存内容也可以用w命令保存到磁盘。