实验1 8086汇编指令编码和调试

四、实验结论

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中的一些命令的使用,对汇编语言的执行过程有了更深的理解。

posted @ 2021-10-22 12:20  博客123456789  阅读(128)  评论(4编辑  收藏  举报