• 实验二


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

    mov ax,0021

    mov ds,ax

    mov ax,2200

    mov ss,ax 

    mov sp,0100

    mov ax,[0]            ;ax= 3130H  

    add ax,[2]            ;ax= 6462H    

    mov bx,[4]            ;bx= 3534H   

    add bx,[6]            ;bx= 6C6AH   

    push ax               ;sp=  00FE  ,修改的内存单元地址是 2200:00FE 内容为 6462H   

    push bx               ;sp=  00FC  ,修改的内存单元地址是 2200:00FC 内容为 6C6AH   

    pop ax                ;sp=  00FE  ,ax=  6C6AH  

    pop bx                ;sp= 0100   ,bx=  6462A      

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

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

    使用e命令修改0021:0~0021:7内存单元数据,并用d命令查看是否正确修改,如下图:

     

    用a命令写入汇编指令,如图:

    用t命令逐条执行,如下图:

    在用t命令执行mov ss,ax语句的时候,它的下一条指令mov  sp,0100也紧跟着执行了;

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

    前三行指令是给指向栈顶元素的SS:SP赋值,SS=2000H,SP=0010H。初始时栈顶和栈底都被e命令赋值为0。

    为什么2000:0~2000:f中的内容发生变化(这个不会,百度的)

    因为在debug使用t等指令引发了中断造成的,中断过程使用当前栈空间存放cpu关键数据,所以,你的栈里就有些不是你操作的数据了。 

  • 相关阅读:
    DataContext.ExecuteQuery的两种方法调用
    记一次电脑被清空的感受
    JAVA学习<二>
    JAVA学习记录<一>
    iOS服务器数据请求"汉字编码"问题
    iOS上传图片问题
    iOS类型的转换
    iOS限制输入解决方法
    iOS10权限问题
    JS进阶学习<一>
  • 原文地址:https://www.cnblogs.com/xinqimisa/p/9864609.html
Copyright © 2020-2023  润新知