编辑: 颜大大i2 | 2019-05-21 |
20 4e mov ax,4e20h 答: 1)进入 debug,在写入机器码和汇编指令之前,先用 r 命令查看 cpu 中各个寄存器(可能回发生变化的寄存器)的情况如下 AX=0000 CS=13c3 IP=0100 2)用E命令写入机器码,格式如:E 13c3:0100 b8
20 4e 或用 A 命令写入汇编指令,格式如:A 13c3:0100 mov ax,4e20 [注: 这里不能用 mov ax,4e20h;
debug 中默认数据为十六进制] 3)用t命令单步运行,之后可以看到变化:AX=4E20 IP=0103 [注:由此可见我们可以用 debug 中的 t 命令单步跟踪程序,通过观察其中各个 寄存器的变化而发现程序中可能存在的逻辑错误] (2)答: 进入 debug 后,首先把这三行指令按如下格式在 debug 中输入: a 2000:0 2000:0000 mov ax,1 2000:0003 add ax,ax 2000:0005 jmp 2000:0003 然后修改其中 cs: ip, 使之指向我们程序 (代码段) 的入口 2000: 0000, 这里可以用 r 命令实现,具体实现如下: r cs CS 13c3 :2000 r ip IP
0100 :0000 之后可以通过控制 jmp 2000:0003 的执行次数实现求
2 的8次方,具 体可以让 jmp 2000:0003 执行
8 次.
[实际上,这这里是死循环,只是在 debug 中可以通过逐条执行的机制控制程序 的随时终止;
在后面我们可以通过寄存器 cx 和loop 指令对循环进行控制,具体 见
第五章] (3)答: 这里直接用 d 命令进行查看,具体格式:d FFFF:0000 之后可以在屏幕右侧看, 类似 08/06/04 之类的时间信息即为生产日期, 可以用 a 命令试图修改,并用 d 命令查看修改是否成功,实际上是不能修改的, 因为 ROM 是只读存储器,不能直接修改. (4)答: 输入书中给出的程序后,可以在屏幕上看到不同色彩的奇怪字符,原因 是这样子的: b800:0000 开始的一段内存空间是 8086pc 机显存地址空间, 往其中填写 不同的数据时,可以对在屏幕上显示不同的内容,具体见
175 页的实验
9 根据 材料编程 ,里面介绍了一些屏幕操作的知识. debug 指令详解
一、DEBUG 概述 DEBUG 是在 DOS 状态下面供程序员使用的程序调试工具.它可以用来检查内存中 任何地址中的内容以及修改特定地址中的内容.DEBUG 还可以用于逐指令执行某 个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件 与磁盘扇区.此外,DEBUG 还可以用于读写端口中的数值. 在DEBUG 状态下, 所有数据都作为字节序列,可以用 DEBUG 把任何类型的文件读 入内存中.DEBUG 能够处理的数据为两种: 十六进制数和 ASCⅡ码,使用两位数 表示十六进制数据(0~9,A~F).在DEBUG 中涉及内存中的数据时,要指定数据 所在的内存单元的地址,地址的输入格式是: [段地址]: [位移].如果没有输入 地址,DEBUG 将假定为当前内存段,从位于地址 100H 的字节开始.前100H 字节 保留给程序段前缀使用(称PSP 结构,包含程序执行的各种信息),该区域用于 建立 DOS 与程序之间的联系. 在DEBUG 中, 使用四位十六进制数表示地址 (0~9, A~F). DEBUG 输入数据时有两种方法: 提示方法和非提示方法.在提示方法下,输入要 求输入数据的命令, 后跟保存数据的地址.执行后可以看到该地址中已有的内容 及一个冒号提示符.此时可以在提示符下输入一个新的值或者按下回车键或 CTRL+C 回到 ― 提示符.在非提示方法下,输入保持数据的内存地址以及要 输入的数据. DEBUG 的启动: 进入 DOS 状态下, 键入 DEBUG ??? , 按ENTER 键, 如: C:\>