实验一	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“根据材料编程”
	,里面介绍了一些屏幕操作的知识。
附录1:debug指令详解 
附录2:dos命令大全		
返回目录