实验1 查看cpu和内存,用机器指令和汇编指令编程
四:实验结论
实验1
分别用E命令和A命令将指令写入内存:
(1)E命令
再用u命令进行反汇编:
(2)A命令
(3)用t命令逐条执行
在执行之前要注意cs:ip的指向,因此要用r命令进行修改:
再用t命令逐条执行(只展示部分)
实验2
(1)先将三条指令写入内存中:
(2)修改cs:ip的值使其从2000:0的地址开始显示
(3)利用t命令逐条显示
最后ax寄存器中的值为0100,转换成十进制是2的8次方256。
实验3
(1)用d命令显示内存fff00h~fffffh中的内容
显示的01/01/92就是要找的生产日期。
(2)尝试修改成01/11/26
字符是根据ASCll码显示的,所以将fff0:00f0这一行的6~13个16进制数改成30,31,2f,31,31,2f,32,36。
结果并没有改变:
翻书找了下原因:
cpu向内存地址为c000h的内存单元中写入数据操作的没有结果的,c000h单元中的内容不会被改变,c000h单元起始就是ROM存储器中的一个单元。因为这等于改写只读存储器中的内容。
实验4
(1)填写不同的数字和地址,粗略的观察体验了一下
(2)经过观察发现,一个彩色图案由两个内存单元控制
第一个内存单元控制样式:
第二个内存单元控制颜色:
再修改地址单元,发现图案的色彩和位置进行了变化。
五.实验总结与体会
这次实验主要是熟悉了debug的编译环境,从配置到使用进行不断探索。掌握了a命令,e命令,d命令,r命令,t命令的使用。学会了用多种方式将命令写入内存,学会修改内存。也通过进一步探索得知向内存地址为c000h的内存单元中写入数据操作的没有结果的。
我的疑问:在观察彩色图案的实验中,通过改变地址观察图案的不同位置。在我实验操作中,有时改变了地址单元但是彩色图案仍没有改变。通过搜索资料:8086的显存地址空间是A0000H~BFFFFH,其中B8000H~BFFFFH为80*25彩色字符模式显示缓冲区,当向这个地址空间写入数据时,这些数据会立即出现在显示器上。可是输入在这个范围内的地址有时仍然显示不出来。可能是不同的计算机分配的内存导致的,查资料也不是特别明白。