l 实验结论
实验任务一:
(1)用A命令将程序段写入1000:0开始的内存单元中,然后用U命令查看写入的代码段反汇编结果
(2)用r命令改写cs:ip地址,再用r命令查看一下,用t命令运行代码
每次运行t命令,程序运行一行代码,同时cs:ip地址自动偏移指令长度的地址
实验任务二:
(1)用A命令将程序段写入2000:0开始的内存单元中
此时我们注意到,代码中jmp 2000:0003的效果使得代码形成了一个循环,每次循环翻倍ax中的值,所以我们可以用它来计算2的8次方
(2)修改cs:ip值并用t命令运行程序
最后ax的结果为0100,即16的平方,2的8次方
实验任务三:
(1)用d命令查看FFF0:0开始的内存地址,尝试寻找生产日期
我们明显注意到最后一行存在着生产日期为01/01/92
(2)尝试改写生产日期
此时我们发现并没有成功改变,这是因为从C0000到FFFFF的内存地址都属于ROM,不能修改其内容
实验任务四:
(1)向从B8100H开始的单元中写入数据
(2)尝试更改输入的数据和更改数据的地址
我们可以发现,每次输入数据,屏幕右上都会出现一个字符,再次输入相同数据,字符颜色会改变。而改变更改的内存单元会导致出现字符的位置发生变化。因为A0000到BFFFF的内存地址属于显存,更改会改变屏幕显示。
l 实验总结与体会
一、通过本次实验,可以熟练掌握了debug工具几项命令的基本使用:
1)r命令查看和修改寄存器中的内容(注意不能直接修改段寄存器)
2)e命令改写内存单元中的内容(既可以写入数据也可以写入指令,因为它们实际上是一样的)
3)d命令查看内存中的内容
4)u命令进行反汇编将内存中的内容解释为对应的汇编指令
5)t命令执行cs:ip处的命令
6)a命令以汇编的方式向内存写入指令
二、掌握了内存单元的分配和意义:
00000到9FFFF的内存地址属于主储存器地址空间
A0000到BFFFF的内存地址属于显存
C0000到FFFFF的内存地址都属于ROM
修改显存地址中的内存内容会改变屏幕显示,无法修改ROM地址中的内容