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

     实验结论

    (1)

     

    mov ax,[0];ax=3130H

    add ax,[2];ax=6462H

    mov bx,[4];bx=3534H

    add bx,[6]; bx=6C6AH

    push ax;sp=00FEH;修改的内存单元的地址是220FE内容是6462H

    push bx;sp=00FCH;修改的内存单元的地址是220FC内容是6C6AH

    pop ax;sp=00FFH;ax=6C6AH

    pop bx;sp=0100H; bx=6462H

    push [4];sp=00FEH;修改的内存单元的地址是220FE内容是3534H

    push [6];sp=00FCH;修改的内存单元的地址是220FC内容是3736H

    与所预测结果一致。

    (2)

    初始SS=073FH SP=00FDH 

    前3行汇编指令的功能

    mov ax,2000;ax=2000将2000装入ax

    mov ss,ax;ss=ax将栈底设置为2000:0000

    mov sp,10;sp=10将栈顶设置为10H

     

     

    2000:0-2000:f改变的原因估计与ss,sp的赋值改变有关系。

    总结与体会

    栈作为一种cpu提供的机制先入后出,可以通过push 和pop指令容易地实现功能

    但是没有检查机制,容易产生越界(栈顶超界而产生问题)

    通过改变ss,sp的值,来安排内存中栈的位置,虽然对其中的一些细节问题还没有完全搞清楚(如第2个实验里面的2000:0H 处长fH的值的改变)

    但是在接下来的学习中,我希望我能搞懂他们。

  • 相关阅读:
    生成R文件
    android开发问题汇总
    雅虎股票接口
    Ext4.1 , #Ext4.2
    MSSQL手工注入 报错注入方法
    MSSQL 数据库复制脚本
    Go VS Code 调式常见问题处理
    Win10 VS2012 无法注册IIS4.0 解决方案
    VirtualBox 局域网独立主机设置
    如何用.reg文件操作注册表
  • 原文地址:https://www.cnblogs.com/asm085/p/9842696.html
Copyright © 2011-2022 走看看