四、实验结论
1、实验任务2
使用debug中d命令查看生产日期
使用e命令修改生产日期所在的内存单元
修改失败,原因是在8086CPU中,c000到fffff这一块地址是ROM空间,是只读存储器,不能写入。
2、实验任务3
从b800:0开始的内存单元开始,依次写入十六进制数据04 03,重复写5次。
在debug中,使用f命令,向内存单元批量填写数据
3、实验任务4
填空
002e--002c--002a--0028--002a--002c--002e--0030
问题一:逻辑地址是0020:0030,物理地址是00230h
问题二:
问题三:
此时数据空间内的数据没有变化。
问题四:
修改之后,数据空间内的数据顺序发生变化
4、实验任务五
问题一:
执行完 mov ss, ax 时,并不是暂停,而是继续执行了下一行 mov sp, 30
问题二:
根据结果可以看到,在数据push入栈之前,栈空间存放的内容是下一条指令地址,在数据入栈后,下一条指令的地址仍然存放在栈中,不过从存放的位置不断变化,随着数据的入栈,存放下一条指令的地址不断向栈顶偏移。
5、实验任务六
源代码截图:
汇编、链接、运行截图:
在debug中查看程序段前缀PSP截图:
6、实验任务七
补全代码:
代码要求复制复制代码3到12行,第一空应该填写代码的段地址,而在寄存器CS中保存着代码段地址,所以应该填写CS,第二空是循环次数,debug 所写的程序,使用-u命令,可以看到,执行指令的地址为076a:0到076a:16,所以转换成十进制应该是23次。
结果展示:
可以看到代码3到12行,已经被复制到了对应的位置。
五、实验总结
通过本次实验,我对汇编语言以及8086CPU有了更多的了解,通过手动实践明白了,8086的内存分配情况,RAM区域、显存区域、ROM区域(只读),加深了debug中的一些命令的使用,对汇编语言的执行过程有了更深的理解。