一开始弄不明白为什么每一条的偏移地址有时候是3有时候是2,后来明白了指令算一个,寄存器算一个,值算一个,两个寄存器只算一个。
第一次没逐条编译直接崩溃了,发现是个死循环。
第二次没有给CS和IP赋值,导致ax的值没有变化,CS和IP的值也不对。
第三次对了,然后2的8次方就是16进制里面的0100.
查这个生产日期,一开始我没懂怎么做。别人教我0:0 ff 的意思,就是从指定的内存位置开始读取,从那个位置开始读到地址ff处。题目中FFF00H~FFFFFH 可以算偏移地址是ff。FFF00H就是FFF0H乘16,,从FFF00H到FFFFFH要再加上偏移地址ff。
一开始没注意,啥都没看出来,后来才发现会有图案出现,挺好玩的嘿。
用d查发现b810不是我改的值,就很好奇,之后改别的地址是可以的,查了一下,貌似是因为b810控制的显存,用d的时候屏幕刷新了,所以b810那的值又变回去了,就不是我改的值了。
原文:https://www.cnblogs.com/zxy666/p/9991855.html