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

    1.使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

    写入指令

     逐步运行:

    可由上图看出:

    mov ax,[0]   ;ax=C0EA

    add ax,[2]    ;ax=C0FC

    mov bx,[4]   ;bx=30F0

    add bx,[6]    ;bx=6021

    push ax       ;sp=00FC;修改的内存单元地址是IP内容为011D

    push bx       ;sp=00FC;修改的内存单元地址是IP内容为011E

    pop ax         ;sp=00FE;ax=6021

    pop bx         ;sp=0100;bx=C0FC

    push [4]       ;sp=00FE;修改的内存单元地址是IP内容为0124

    push [6]       ;sp=00FC;修改的内存单元地址是IP内容为0128

    (2)仔细观察图中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?

    输入指令

    修改2000:0~2000:f的值

    查看该地址的值,确保已修改

    使用t命令逐步运行,运行两个指令后再查看2000:0~2000:f的值

    发现该地址上的数据改变了,不过我观察到我的值和课本上给出的例子的值不同。所以我觉得这个值的改变并不是人为设定的,

    而是计算机自动改变的值,因为运行的指令和栈有关,所以我怀疑这个值可能是由对栈的变动产生。

    上网查询后,网上对于这个问题的解释是,t命令是中断,为了保留现场,机器自动压栈SS,IP,CS;为单步中断;而且看到这十个

    数值,发现正好是SS,IP,CS的赋值!

    但是其具体原理,我仍然不太明白,为何会在这个地址产生这几个数值呢?产生这几个数值的意义是什么(目前我猜测是为了暂存

    SS,IP,CS,但我不知道暂存这些的原因)?这个问题我依然保留。

  • 相关阅读:
    Django -- 路由系统(URLconf)
    Django简介
    jQuery
    DOM
    JavaScript
    HTML,CSS
    Redis PK Memcached
    ORM框架-SQLAlchemy
    Memcached操作以及用法
    Py3快速下载地址
  • 原文地址:https://www.cnblogs.com/xcss831/p/9866716.html
Copyright © 2011-2022 走看看