zoukankan      html  css  js  c++  java
  • 实验2 用机器指令和汇编指令编程

    (1)用E命令将内存单元0021:0到0021:7连续8个字节数据修改为30H、31H、32H、33H、34H、35H、36H、37H,并用D命令查看修改结果。

    (2)用R命令查看CS、IP的值,用A命令输入程序段。

    (3)用T命令单步调试   AX=3130H

    AX=6462H

    BX=3534H

    BX=6C6AH

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

    SP=00FC;修改的内存单元是2200:00FC内容为6C6AH

    SP=00FE;AX=6C6AH

    SP=0100;BX=6462H

    SP=00FE;修改的内存单元的地址是2200:00FE内容为3534H

    SP=00FC;修改的内存单元地址是2200:00FC内容为3736H

     

    2.

    (1)用A命令输入汇编指令,用E命令修改2000:0到2000:F的值,用D命令查看修改后的值

    (2)用T命令单步调试,每次调试后都用D命令查看2000:0到2000:F的值的变化

     



     mov    ax,2000

     mov    ss,ax               ;设置栈的段地址,SS=2000H,不能直接向段寄存器SS中送入数据,所以用AX中转

     mov    sp,10               ;设置栈的偏移地址,因栈为空,所以SP=0010H

    初始时栈顶和栈底为2000:0010

    通过观察发现,在执行完mov ss,ax后,栈内存单元的值有了变化,值与CS、AX等寄存器的值相同。

    总结与体会

    Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。

    执行push时,CPU先将SP=SP-2,后向SS:SP处传送数据;执行pop时,CPU先读取SS:SP处的数据,再将SP=SP+2

  • 相关阅读:
    C++多线程二
    C++多线程一
    定义抽象数据类型
    泛型函数
    关联容器(map):支持高效查找的容器,一种键值对的集合。
    字符串拆成单词的另一种实现
    将字符串拆成单词,并算最长的长度
    重载,排序,集合实例
    程序调用动态链接库中的方法,位图,类
    用bosybox制作文件系统
  • 原文地址:https://www.cnblogs.com/547hh/p/9866341.html
Copyright © 2011-2022 走看看