汇编实验一

作者: 柠檬就是酸 | 来源:发表于2018-08-07 13:53 被阅读19次

    汇编实验一

    实验一主要是学会使用debug的,命令,查看内存状态等。

    Mac下虚拟机打不开Windows的debug,便使用dosbox,启动如下: DOS启动.png

    (1)题

    • R命令:查看改变CPU寄存器的内容

    • D命令:查看内存中的内容

    • E命令:改写内存中的内容

    • U命令:将内存中的机器指令翻译成汇编指令

    • T命令:执行一条机器指令

    • A命令:以汇编指令的格式在内存中写入一条机器指令

    根据课本的实验要求,输入代码并使用d命令查看内存: 1.png 可以看出来,使用d命令后可以看出来内存的状态,但是,机器码看不懂,再使用u命令,将机器码翻译成汇编命令: 2.png 这就是刚刚自己打的代码了,到此为止,已经向内存中写入了我们想要执行的代码了,接下来就要想办法让它执行,那么怎么执行,就由CS:IP来决定了,查看CPU寄存器并将CS:IP指向073F:0100就好了,先查看CPU寄存器状态: 3.png

    运气比较好,直接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.png

    01/01/92,dosbox很残暴。不管了,现在修改他,先说一下,d fff0:0 ff后面的ff是范围的意思,最后一行,的30H,就是十进制下的48,也就是ASCII码的0,这样就对起来了。

    修改如下: 8.png

    不顶用!原因想一想是,这个题目说了是修改主板上的ROM,ROM是什么,只可读不可写啊,所以肯定改不成。

    (4)

    第四题直接修改如下: 9.png

    上面出现了笑脸,原因是,这个地址是显存,也就是内容会在显示屏上显示出来。

    相关文章

      网友评论

        本文标题:汇编实验一

        本文链接:https://www.haomeiwen.com/subject/ucoovftx.html