zoukankan      html  css  js  c++  java
  • assembly实验二

    1、使用Debug将程序段写入内存,逐条执行。

    为了便于验证实验结果,在使用 a 命令输入指令调试前,先使用 e 命令将内存单元 0021:0 ~0021:7 连续 8个字节数据修改为 :

    30H, 31H, 32H, 33H,34H,35H,36H,37H

    操作如下图:

    接着使用a命令输入书上74页试验任务一的程序段:

    使用t命令逐条执行:

    (注意上图圈出的两条语句中间本应还有一句(mov sp,0100),可因中断机制的存在debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行(无论下一条语句是不是执行对sp的改写))

    跟踪执行过程中几个寄存器的内容,如下图所示:

    手写内容与debug单步调试中并未发现不同之处。

    2、观察书75页中的实验过程,分析2000:0~2000:f中内容发生改变的原因。

    首先使用 a 命令输入书中的 7 行指令,再使用 e 命令修改 2000:0~2000:f的值,并在修改后对其进行查看。

    操作如下图:

      

    前三行指令是给指向栈顶元素的SS:SP赋值,SS=2000H,SP=0010H。

    初始时栈顶和栈底都被e命令赋值为0。

    接着单步调试每一行汇编指令。且每一条指令单步调试后,都使用 d 命令查看2000:0~2000:f 的值。

    观察每一条指令执行后相关寄存器值的变化,及 2000:0~2000:f 单元值的变化。

    操作如下图:

    我眼睛都要看瞎了只发现了2000:0010存放的是IP的地址,2000:0012存放的是cs的地址。

    别的就不知道了.......

    而且什么猜想也没有.........

    求大佬指教.......

    小总结:

    通过本次实验我对mov、sub、add、push、pop等操作更加熟练了,同时也能够自己算出各时刻个寄存器的值,有点小小的成就感。

    各个字母数字在我眼中都有了不同的意思,不再是乱码般的存在了。

  • 相关阅读:
    JQuery validate.js 在ajax提交form时如何触发
    Ajax回调函数返回的中文字符串乱码问题
    对HTML5校验 自定义验证信息
    Mybatis + Mysql 插入数据时中文乱码问题
    javac 导入第三方jar包
    如何在VISIO 2010/2013 中关闭Shape protection(图形保护)
    关于 XMLHttpRequest对象的onreadyStateChange方法
    Centos7通过Docker安装Sentry(哨兵)
    Entity framework 预热
    Xamarin.Android Binding篇
  • 原文地址:https://www.cnblogs.com/wlxnw/p/9863230.html
Copyright © 2011-2022 走看看