实验1.1.用a命令将指令写入内存
1.目标写入的代码
单步调试的结果如下:
实验1.2.用e命令将指令写入内存
代码如下,经过同样的单步调试,发现结果与用A命令写入一样
---------------------------------------------------------------------------------------------------------------------------------
实验2.将三条指令写入,并计算2的八次方
在十进制转十六进制中,256的十六进制表示为100H所以当循环四次后求得结果。
---------------------------------------------------------------------------------------------------------------------------------
实验3.查看内存中的内容
在内存FFF00H-FFFFFH中用D命令即可查到自己的生产日期,如下图所示
然后我就试着开始修改生产日期,但在用e命令修改后结果依旧不变
在翻阅书后1.15节并且百度搜索后,我发现地址A000H-FFFFH的23KB空间是各个ROM的地址空间。而且在向地址C0000-FFFFF的内存单元中写入数据的操作是无效的,因为这等于在修改只读存储器中的内容。
A000H~FFFFH的24KB空间为各个ROM的地址空间,ROM--Read Only Memory 中文意思是:只读存储器,掉电后数据不丢失的一种内存。因为FFFF:0005~FFFF:000C是ROM(只读存储器)中的单元,所以FFFF:0005~FFFF:000C具有read only(只读)的性质,因此修改后内存数据没改变。也就是说,生产日期是改不了的。
---------------------------------------------------------------------------------------------------------------------------------
实验4.从内存中向B8100H开始的单元填写数据
在输入不同的指令后右上角会出现不同颜色和形状的图案。
---------------------------------------------------------------------------------------------------------------------------------
实验中出现的问题
发生的问题:在调试的过程中,发现了如下问题,即A的值始终不发生变化。
在尝试了好久后,才发现IP地址的值始终没有改变,而T命令的作用是执行CS:IP指向的内存单元的指令,所以不管我怎么单步调试,AX的值始终不会改变。解决的方法有两个,一个是直接用系统初始的CS:IP的地址进行指令的写入;另一个是修改CS:IP的地址,方法如下:(PS:我之后设置IP的时候设成0001,但下面用的-a 1000:0还是找了好久错误才知道自己错在哪里,细心很重要!!!!)