• 实验报告:实验二


    实验结论

    1.使用debug,将书上程序段写入内存逐条执行并填空。

    先用e命令修改0021:0~0021:7的连续8个字节并用d查看。

    随后用a命令输出书上的汇编指令。(如下图)  根据实验要求第一部改为mov ax,0021

    用r查看初值,然后用t命令逐条执行并观察ax,bx,ss,sp值的变化。

    从下图开始,为书上所需填空的步骤。

    根据每部的ax,bx,ss,sp的值在书上填空(如下图)字丑见谅。。

    实验结果经验证和理论相符。

    2.观察书上p75图,分析为啥2000:0~2000:f的内容会发生改变。

    输入书上内容并用d查看2000:0内容

    然后用t逐条执行,每步后都用d命令查看内存单元的值。

    前三段汇编指令的功能是初始化一个栈,前两部确定了栈段地址为2000H(用ax传给ss),而第三部mov sp,10则确定了栈顶的地址为20010H,即初始化了栈顶。前三步构建了一个栈顶为20010H,栈底为20000H的一个栈。

    关于内存内容改变的猜想:栈在构建后后几位的内存空间的值在不断变化,除了存入必要数据外还有一些其他的机器码,所以认为,在执行指令存入数据的同时,也存入了其他的数据,有可能是cs ip或者ss sp的当前值,或者是下一步即将执行的机器码?

    实验总结

      通过本次试验,我能更加熟练的运用汇编debug工具中的各项指令,对于栈的内存空间的排布存储有力深的理解,对于栈的特点先入后出的原则也是牢记于心 ,对于第二个实验也许是0806采用的是小端法所以最后存入的数据才是66 33吧?但是对于栈中的具体细节操作其实自己并没有非常清晰的认识,所以无法精确地解答内容发生改变的具体原因,希望通过后面的学习,自己可以解决疑惑,学习到更多知识。

  • 相关阅读:
    python,生产环境安装
    neo4j 图数据库
    RNN系列
    机器学习关于AUC的理解整理
    fensorflow 安装报错 DEPENDENCY ERROR
    dubbo Failed to check the status of the service com.user.service.UserService. No provider available for the service
    使用hbase遇到的问题
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
    gradle 安装
    jenkins 安装遇到的坑
  • 原文地址:https://www.cnblogs.com/xue123/p/9848407.html
Copyright © 2020-2023  润新知