实验一

实验1.1.a命令将指令写入内存

 1.目标写入的代码

 

 

 

单步调试的结果如下:

 

 

 

 

 

实验1.2.e命令将指令写入内存

 

代码如下,经过同样的单步调试,发现结果与用A命令写入一样

 

 

---------------------------------------------------------------------------------------------------------------------------------

 

实验2.将三条指令写入,并计算2的八次方

 

 

 

 

 

 

 

在十进制转十六进制中,256的十六进制表示为100H所以当循环四次后求得结果。

 

---------------------------------------------------------------------------------------------------------------------------------

 

 

 

实验3.查看内存中的内容

 

在内存FFF00H-FFFFFH中用D命令即可查到自己的生产日期,如下图所示

 

 

 

然后我就试着开始修改生产日期,但在用e命令修改后结果依旧不变

 

 

  在翻阅书后1.15节并且百度搜索后,我发现地址A000H-FFFFH23KB空间是各个ROM的地址空间。而且在向地址C0000-FFFFF的内存单元中写入数据的操作是无效的,因为这等于在修改只读存储器中的内容。

  A000HFFFFH24KB空间为各个ROM的地址空间,ROM--Read Only Memory 中文意思是:只读存储器,掉电后数据不丢失的一种内存。因为FFFF0005FFFF000CROM只读存储器)中的单元,所以FFFF0005FFFF000C具有read only(只读)的性质,因此修改后内存数据没改变。也就是说,生产日期是改不了的。

---------------------------------------------------------------------------------------------------------------------------------

 

实验4.从内存中向B8100H开始的单元填写数据

 

 

在输入不同的指令后右上角会出现不同颜色和形状的图案。

 

 

 

---------------------------------------------------------------------------------------------------------------------------------

 

 

 

实验中出现的问题

 

发生的问题:在调试的过程中,发现了如下问题,即A的值始终不发生变化。

 

 

 

  在尝试了好久后,才发现IP地址的值始终没有改变,而T命令的作用是执行CS:IP指向的内存单元的指令,所以不管我怎么单步调试,AX的值始终不会改变。解决的方法有两个,一个是直接用系统初始的CS:IP的地址进行指令的写入;另一个是修改CS:IP的地址,方法如下:(PS:我之后设置IP的时候设成0001,但下面用的-a 10000还是找了好久错误才知道自己错在哪里,细心很重要!!!!)

 

 

 

 

 

 

转载于:https://www.cnblogs.com/zyx20171346065/p/9833684.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值