实验内容:
-
用debug的R命令查看,并改变cpu寄存器的内容
-
用debug 的D命令查看内存中的内容
-
用 debug 的 E命令改写内存中的内容
-
用 debug 的 U命令将内存中的机器指令翻译成汇编命令
-
用 debug 的T命令执行一条机器指令
-
用 debug 的A命令以汇编指令的格式在内存中写入一条机器指令
实验过程:
首先进入debug
查看,并改变cpu寄存器中的一个的内容
用D命令查看内存中的内容,这里查看了从地址073F:0000开始内存上的内容
用E命令修改内存中的内容
用U命令将内存中的机器指令翻译成汇编指令,我们从 地址073f:0000处翻译
我么用A命令编写一个汇编程序,并将其机器指令翻译成汇编指令,并执行
如上图:当前已经把我们的汇编指令写入内存中了,我们把内存中从地址073F:0100处的一段连续的内存中的机器语言翻译成汇编指令。
接下来我们执行T指令,观察AX寄存器和BX寄存器的改变:
一开始的指令是 mov ,ax=4E20,此时执行了机器指令,AX=4E20,接下来执行,ADD ax,1416
所以当前ax+1416=4e20+1416=6236
接下来一次执行汇编的命令,来模拟cpu的执行过程。
问题二
将下面三条指令写入从2000:0开始的内存单元中,利用这三条指令计算 2^8。
mov ax,1
add ax,ax
jmp 2000:0003
写入以上命令并检查当前地址,如果和以上地址不想应,则修改地址
接下来执行以上命令
解释这样如何得到ax=0008
首先我们在2000:0000→2000:0002过程中我们执行了ax=0001,
在2000:0003→2000:0004过程中我们执行了 ax+ax,此时ax=0002,
然后我们在由jmp:2000:0003地址重新执行add ax,ax,
我们往复执行这一循环对ax不断进行倍加,得到ax=0008
问题三
查看主板内存中的内容
pc机主板的上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找出这个日期并试图改变它。
显示生成日期:01/01/92 92年生产的主板??假的吧!
问题四
向B810H开始的单元中填写数据:
如 e b810:0000 01 01 02 02 03 03 04 04
细心的话可以发现,屏幕有些地方开始出现数字,这些数字是16进制转化成10进制所对应的ascii码对应的图像,而b810:0000所对应的内存地址是指向的是显存