实验1 8086汇编指令编码和调试
2021/10/22 22:39:53
本文主要是介绍实验1 8086汇编指令编码和调试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
实验结论
实验任务2
使用d命令查看生产时期的截图
可见,FFF0:0053处起的一串信息为生产日期
下面试图修改它
可见我们不能够修改这些信息,原因可能是这些重要信息记载在只读存储器上,不能被修改
实验任务3
使用e命令修改内存单元
以下是原内存内容
以下是使用e命令修改内存之后的效果
以下是使用f命令修改内存之后的效果
实验结论4
逻辑地址是 20:30
物理地址是 00230H
以下是将内容写入内存的过程
以下是写入汇编代码的过程
单步执行程序
查看栈空间中的数据
此时栈中的数据已经正确写入
然后使用d指令查看内存中的内容
可以看见,内存中的内容并没有改变
下面改变代码的内容:
单步执行后,查看内存中的内容
可以看见,内存中的内容发生了变化
实验任务5
在执行代码之前首先向栈空间中写入零数据
然后向内存中写入汇编代码
单步执行汇编代码
可见两条指令执行期间没有中断
因为如果ss和sp的修改是连续的两步,那么cpu不会中断,否则会造成栈错位
而且在执行的过程中,栈空间中的内容有变化
内存单元有变化,可能是cpu在中断过程中向栈中填入了中断信息
实验任务6
以下是代码截图
以下是编译和链接的过程
下面是程序执行的结果
使用d命令查看程序的前缀内容:
发现前两个字节确实是CD 20
实验任务7
补全之后的源代码:
第一空填code
因为我们需要复制的是本程序的源代码,所以我们把代码段寄存器的内容送入ds,以待拷贝
第二空填0018h
第二空是循环的次数,也就是我们需要拷贝的数据的字节数,经过u命令查询,发现一共有18h个字节,所以此处填写18h
以下是执行代码,并反汇编查询的过程
可见,源代码已经正确地被拷贝
实验总结
经过这次的实验,我学到了非常多的东西
首先是熟悉了debug程序的使用,能够基本记住每个命令的功能,不需要等到要用了采取查功能
其次是对栈和循环之类的知识有了更深的理解,实验之后有了更实切具体的体会
也学到了一些新知识,比如在做实验5的时候,查阅书本知识,顺便了解了debug中断单步调试具体的实现原理,也就能够了解为什么ss和sp连续改变的时候,cpu不会产生中断
这篇关于实验1 8086汇编指令编码和调试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南