• 实验二


    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,但我不知道暂存这些的原因)?这个问题我依然保留。

  • 相关阅读:
    Single Image Dehazing via Conditional Generative Adversarial Network(CVPR2018-图像去雾)
    STF-GAN:Recovering Realistic Texture in Image Super-resolution by Deep Spatial Feature Transform (CVPR2018)
    os 模块
    Pytorch-get ready with me
    Python学习(第七章)
    Python学习(第六章)
    pytorch与opencv 安装(Linux)
    Python学习(第五章)
    Python学习(第四章)
    Python学习(第三章)
  • 原文地址:https://www.cnblogs.com/xcss831/p/9866716.html
Copyright © 2020-2023  润新知