实验五

Posted daiyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验五相关的知识,希望对你有一定的参考价值。

实验1:

一:将代码输入在6.txt中,将其保存在masm文件夹下,并改后缀为asm

技术分享图片

二:使用dosbox编译,调试该文件,连接完成后使用debug中的r命令查看寄存器中的值

技术分享图片

从中我发现,cs的值为076c,再使用u命令反汇编实验代码,用g命令运行,再用d命令查看data段中的值

技术分享图片

从中我发现,在CPU和程序执行前,data中的值保持不变,并且cs=076c,ss=0769,ds=075A。最重要的是,设程序加载后,code段的段地址为X,则data段的段地址为:X-2,stack的段地址为:X-1

实验2:

一:将代码输入在7.txt中,将其保存在masm文件夹下,并改后缀为asm

技术分享图片

二:在dosbox的debug环境下调试t1.exe,并用r查看各寄存器的值,u命令进行反汇编,g命令执行

技术分享图片

三:从中我发现,CPU执行程序,程序返回前,data段中的数据不变,且对于定义的段,如果段中的数据占N个字节,则程序加载后,这段实际占有的空间为:若N不满16个或为16字节则为一段,N满16但不满32也分配32字节,即 a=Nmod16,若a=0,则空间为 (N16)*16,若a≠0,则空间为 (N16+1)*16

实验3:

一:将代码输入在8.txt中,将其保存在masm文件夹下,并改后缀为asm

技术分享图片

二:在dosbox的debug环境下调试8.exe,用r命令查看各寄存器的值,u命令反汇编,g命令执行

技术分享图片

三:从中发现,CPU执行程序,程序返回前,data段中的数据不变,CPU执行程序,程序返回前,cs=076a,ss=076e,ds=076d。设程序加载后,code段的段地址为X,则data段的段地址为:X+3,stack的段地址为:X+4

实验4:如果将(1),(2),(3)题中的最后一条伪指令“end start”改为“end”(也就是说,不指明程序的入口个),则哪个程序仍然可以正确执行?请说明原因。

由实验结果可知:(1)和(2)不能正确执行,反汇编出来的代码并不是我们之前输入的,所以执行失败。而(3)的data和stack都在code之后,所以ip本来就为0,可以正确执行。

实验5:

一:将代码补全然后输入到1.asm中

技术分享图片

二:使用dosbox中的debug进行汇编并查看是否实现了数据的相加

技术分享图片

实验6:

一:将数据存入2.asm中

技术分享图片

二:在debug中使用d命令调试程序

技术分享图片

可是在程序运行前后并没有实现数据的相加和存储,问题目前还不清楚。

实验总结:

通过这次的实验,我学会了多个程序的运用和执行,了解到了汇编语言中的嵌套使用。在cpu执行前后,ds与ax的值是有一定的关联的。在实验中我也遇到了许多问题,希望在以后的学习中得到解决。

以上是关于实验五的主要内容,如果未能解决你的问题,请参考以下文章

实验五

2018-2019-2 20175306实验五《网络编程与安全》实验报告

2018-2019-120165223 实验五 通讯协议设计

学号 2017-2018-2 《程序设计与数据结构》实验五报告

汇编实验五

201555332盛照宗—网络对抗实验1—逆向与bof基础