》实验结论
1.使用debug将程序段写入内存,逐条执行,观察每条指令执行后CPU相关寄存器中内容的变化
先用a命令写入汇编指令,再用d命令查看,u命令翻译,t命令执行;再用e命令写入机器码,一样一样地来一次,具体如下:
(A)
(U)
这里我们已经可以看出右侧的汇编指令反汇编之后跟左侧的机器码是相同的
(E+D)
(E的T)
所以,可以看出在读取一条指令之后,IP中的值是根据当前读入指令的字节数增加相同的数目,以使CPU可以读取下一条指令,因为在8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.利用书上的指令,计算2的8次方
写入内存后如下:
用T命令执行后,只截取了能看出所求结果的,截屏如下:
100h计算可知,2^8=256
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.查看ROM中的生产日期
实现如下:
推测是1992/01/01生产的PC机主板
E命令可以改写内存中的内容,但没有成功,【其实是我不知道怎么改┗|`O′|┛ 】
ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM 相反。
ROM又分一次性固化、光擦除和电擦除重写两种类型。
改的话我搜索查询后得知,可能需要一个rom小助手之类的刷机软件,就不拿自己电脑试了吧
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4.向内存从B8100H开始的单元中填写不同的数据,观察各自现象
几组数据尝试如下:
发现改变地址后,虽然出现了不同位置,不同形状,不同颜色的图形,但是忘记是哪个导致的了,而且不是每条指令都有图形出现。
根据书中提示“仔细阅读第一章中的1.15节”,我了解到,向地址A0000~BFFFF(显存)的内存单元中写数据,这些数据会显示在显示器上,向地址C0000~FFFF的内存单元写入数据则不能,因为后者只改写了ROM中的内容。
》实验总结与体会
关于(1),在E命令下,还是习惯性敲回车代替敲空格来“下一个”,第一个我敲了三四遍啊啊。此外,其实一开始在机房敲的时候,使用的是“e 回车 输入地址 输入机器码 写到最右侧再数这行总共多少个 再加一下算出现在所在的地址”emmmm。后来看了一下书,知道了“e 0:200 回车”(举例) 这种操作方法。在前面的e中看到了在8个和第9个中间会出现“-”这个符号,一行最多可输入16个单元的内容,所以“-”是为了方便查看。
关于(2),不知道要CS和IP改成当前指向的,一开始直接在执行T命令,直到我在几个满屏T里都没找到我要的指令。。。
关于(3),因为懒惰和愚蠢,先猜了头尾的两个数,想着再慢慢缩小范围来找 ,然后好像发现了什么了不得的事(并不是后来知道,日期是假的,虚拟的,所以我找到这个虚拟日期是不是不是因为它本来就在哪里,而是它自己碰巧出现了。
关于(4),“读者对实验结果感到疑惑,请仔细阅读1.15节”,可显不可显好像是知道了,挠头,还是疑惑,怎么改了一下就这么绚丽多彩了呢