汇编实验一
2018-08-07 本文已影响19人
柠檬就是酸
汇编实验一
实验一主要是学会使用debug的,命令,查看内存状态等。
Mac下虚拟机打不开Windows的debug,便使用dosbox,启动如下:![](https://img.haomeiwen.com/i11705248/8eab73926aa5babb.png)
(1)题
-
R命令:查看改变CPU寄存器的内容
-
D命令:查看内存中的内容
-
E命令:改写内存中的内容
-
U命令:将内存中的机器指令翻译成汇编指令
-
T命令:执行一条机器指令
-
A命令:以汇编指令的格式在内存中写入一条机器指令
![](https://img.haomeiwen.com/i11705248/4194e2d4fc3bd4f9.png)
![](https://img.haomeiwen.com/i11705248/15252d0346857624.png)
![](https://img.haomeiwen.com/i11705248/513e28fa04771113.png)
运气比较好,直接CS:IP就是正确的,如果CS或者IP不是正确的,就要像上面那样子改变两个寄存器的值,可以看出来,下一条将要执行的命令就是mov ax,4E20,看r命令之后的最后一排,CS:IP的值,机器码,汇编指令全是和前面一一对应正确的。
执行t命令,执行一条机器指令:![](https://img.haomeiwen.com/i11705248/0560e222d63adb49.png)
可以看出,AX的值已经改成了4E20,CS段地址不变,IP偏移地址加3,原因是上一条命令占三个字节,执行完成后自动加3,最后一行显示的是下一条要执行的命令。
后面的都类似这样,不停地执行t命令到完就行了。
(2)题
实验要求将命令写入2000:0开始的内存单元,那么就使用a命令开始写,但一定要注意CS:IP的值,很重要。![](https://img.haomeiwen.com/i11705248/6c89b90f6126c542.png)
![](https://img.haomeiwen.com/i11705248/b64d311ab412fd6d.png)
(3)
这个题目是找到PC主板机上的ROM里的生产日期,并试图改变它。![](https://img.haomeiwen.com/i11705248/84a02e603a6c51fe.png)
01/01/92,dosbox很残暴。不管了,现在修改他,先说一下,d fff0:0 ff后面的ff是范围的意思,最后一行,的30H,就是十进制下的48,也就是ASCII码的0,这样就对起来了。
修改如下:![](https://img.haomeiwen.com/i11705248/e89fdde1f8eba64f.png)
不顶用!原因想一想是,这个题目说了是修改主板上的ROM,ROM是什么,只可读不可写啊,所以肯定改不成。
(4)
第四题直接修改如下:![](https://img.haomeiwen.com/i11705248/97982b9a0287a1bf.png)
上面出现了笑脸,原因是,这个地址是显存,也就是内容会在显示屏上显示出来。