实验五
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 实验五 通讯协议设计