zoukankan      html  css  js  c++  java
  • 汇编实验2(又是作业emm)

    实验任务:学会使用debug

    1.使用Debug,将程序段写入内存:

    首先对0021:0000~0021:000F的内存赋值

    这里我赋的值是 11 12 13 14 15 16 17 18

    输入mov ds,as时打错了。。。问题不大,重新输入一次

    实验结果:

    在内存0021:0000处创建了一个长度为FH的栈结构,对AX赋值后压栈

    逐步运行后,观察数据结果并填空

    2.观察如下例子,分析

    分析为何一开始2000:0~2000:000F所有元素为0,而之后发生改变(如下图)

    2000:0~2000:000F的元素发生变化

    对于每一项指令进行操作d查看内存元素

    我们可以发现,执行mov ss,ax后,并没有改变2000:0~2000:000F的元素,而进一步对ax赋值产生了改变

    给ax赋值后压栈前,用d命令观察2000:00内存,都是00,创建栈结构指向这段内存时,有些数据改变了

    仔细观察,不难发现,从2000:000F到2000:0000,
    倒序现实各元素为 01 A3 07 3F 01 08 00 00 20 00 00 00 00 00 00 00,
    显然存在着CS(07 3F),IP(01 08),AX(20 00)的值
    因此,我猜测可能与寄存器栈操作时会将一些寄存器变量如地址压入栈中!
    我在网上查阅了相关资料,发现是t命令实际是引发了单步中断,执行中断例程时,CPU会将一些中断例程使用的的寄存器变量自动压栈到栈中。
    这是以后学习的内容emm
     
  • 相关阅读:
    ubuntu 搜索文件方法(find命令)
    tomcat ip访问
    Linux下tomcat 的启动 关闭 kill
    Hibernate 之 使用
    tar 用法
    ubuntu下配置django+apache+mysql+mod_python+Python
    Windows Mobile Ping 命令实现(转)
    C#异步方法调用(四大方法详解)
    HTML基础(一):HTML简介
    windows2003系统的iis不能下载exe文件
  • 原文地址:https://www.cnblogs.com/mrorangerabbit/p/9861096.html
Copyright © 2011-2022 走看看