【汇编语言】——用机器指令和汇编指令编程

时间:2024-01-21 21:07:12

《汇编语言》(王爽著 第三版)第二章章后实验报告与总结

debug实验环境配置,配置完毕界面如图:

实验任务(1)

1.用E命令输入机器码

在上截图最后 - 之后如果我们输入R命令,就可以查看和改变CPU寄存器的内容,这里我们需要通过R指令查看寄存器的状态,

这样我们可以看到CS:IP指向的是073F:0100,如下所示:

我们接着再次使用R命令修改CS:IP中的内容,使CS:IP指向1000:0,结果如下:

使用E命令输入 -e 1000:0 b8 20 4e,再用U命令查看对应的汇编指令,T命令执行。

指令得到执行后,AX中的内容被改写为4E20H,IP改变为IP+3(因为mov ax,4E20H的指令长度为3个字节),CS:IP指向下一条指令。结果如下:

重复以上操作,将任务要求的指令全部输入完毕后得到的结果如下截图:

最后CS:IP指向1000:0021,说明指令总长度为21个字节。

 2.用A命令输入汇编指令

同E命令类似,用A命令 从1000:0开始的内存单元中写入任务要求的汇编指令。

实验任务(2)

首先用A命令将任务要求的指令写入从2000:0开始的内存单元中,得到结果如图:

接着用T指令计算2的8次方,结果如图:

 

 最后得到AX结果为0010H。

实验任务(3)

输入-d FFFF:0 F,读取FFFF:0中的内存数据,得到的数据意义为:

生产日期的数据存放在FFF0:00F6到FFF0:00FE的内存单元中,它们的ASCII码意义是01/01/92。

结果如图所示:

 

 

 实验任务(4)

用E命令写入数据,再用D命令读取数据,再输入-e B810:0000 05 05 06 06 07 07 08 08,进行数据修改,用D命令查看,再输入e 2000:0000 01 01 02 02 03 03 04 04,在改变填写数据后,第二次使用D命令时,内存单元并没有显示之前用E命令存放的数据,而是其他数据。改变填写地址没有变化。所有步骤结果如下图:

实验感悟

通过写这篇博客,完成一次实验任务,让我对debug的使用有了一些简单的了解。有些内容写在书上,任凭自己想象感觉很简单,但真正操作起来发现并没有那么顺手。所以亲自上机动手操作还是很重要的。一些常见的指令,比如说t,r,d,e还是要多加练习才能熟练运用。在完成整个实验的过程中,可能真的是实验难度不大,整个过程除了耗时久没什么大问题,这个主要还是由于自己不熟悉吧,每一个任务都要前前后后翻书,记不住操作指令。打字速度也很慢,所以显的写一篇博客很久很久。但是写完还是会有一点点成就感。因为每一步都准确完成截图,不比之前的报告,可以手动省略步骤偷懒。还是要多练习吧!