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

    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关键数据,所以,你的栈里就有些不是你操作的数据了。 

  • 相关阅读:
    两数之和
    Go网络编程UDP
    Go网络编程TCP
    Go_json
    Iris_xorm
    Go初始化结构体数组/切片
    Iris_xorm
    pyhon之函数参数
    python之深浅拷贝
    python作业之用户管理程序
  • 原文地址:https://www.cnblogs.com/xinqimisa/p/9864609.html
Copyright © 2011-2022 走看看