汇编实验一
实验一主要是学会使用debug的,命令,查看内存状态等。
Mac下虚拟机打不开Windows的debug,便使用dosbox,启动如下: DOS启动.png(1)题
-
R命令:查看改变CPU寄存器的内容
-
D命令:查看内存中的内容
-
E命令:改写内存中的内容
-
U命令:将内存中的机器指令翻译成汇编指令
-
T命令:执行一条机器指令
-
A命令:以汇编指令的格式在内存中写入一条机器指令
运气比较好,直接CS:IP就是正确的,如果CS或者IP不是正确的,就要像上面那样子改变两个寄存器的值,可以看出来,下一条将要执行的命令就是mov ax,4E20,看r命令之后的最后一排,CS:IP的值,机器码,汇编指令全是和前面一一对应正确的。
执行t命令,执行一条机器指令: 4.png可以看出,AX的值已经改成了4E20,CS段地址不变,IP偏移地址加3,原因是上一条命令占三个字节,执行完成后自动加3,最后一行显示的是下一条要执行的命令。
后面的都类似这样,不停地执行t命令到完就行了。
(2)题
实验要求将命令写入2000:0开始的内存单元,那么就使用a命令开始写,但一定要注意CS:IP的值,很重要。 5.png 很容易看出这是一个死循环,想要让CPU执行它,则要修改CS和IP的值,如上,一直执行t命令,直到算出来2的8次方为止。 6.png(3)
这个题目是找到PC主板机上的ROM里的生产日期,并试图改变它。 7.png01/01/92,dosbox很残暴。不管了,现在修改他,先说一下,d fff0:0 ff后面的ff是范围的意思,最后一行,的30H,就是十进制下的48,也就是ASCII码的0,这样就对起来了。
修改如下: 8.png不顶用!原因想一想是,这个题目说了是修改主板上的ROM,ROM是什么,只可读不可写啊,所以肯定改不成。
(4)
第四题直接修改如下: 9.png上面出现了笑脸,原因是,这个地址是显存,也就是内容会在显示屏上显示出来。
网友评论