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
     
  • 相关阅读:
    正则表达式
    kafka Auto offset commit faild reblance
    安装包问题
    身份证头像截取
    web表单
    模板与继承与控制语句
    虚拟环境安装及Hello World
    flask入门脚本解释
    python3 邮件发送
    ASP.NET MVC文件上传简单示例
  • 原文地址:https://www.cnblogs.com/mrorangerabbit/p/9861096.html
Copyright © 2011-2022 走看看