实验一 debug的使用
(1)答:
仅举第一行:
机器码 汇编指令 b8 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“根据材料编程”
,里面介绍了一些屏幕操作的知识。