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

    1. 教材实验 2P71

    (1)练习「1.预备知识:Debug 的使用」

    (2)在练习基础上,完成「2. 实验任务」补充:

    为了便于验证实验结果,对「2. 实验任务」中的(1)做如下两点调整: 

    ①在使用 a 命令输入指令调试前,使用 e 命令将内存单元 0021:0 ~0021:7 连续 8 个字节数据修改为 30H, 31H, 32H, 33H,34H,35H,36H,37H 

    ②将 P74 实验任务(1)中第 1 行的 mov ax, ffff → 改为 mov ax, 0021  实验前,请理论上分析指令执行后各个填空处的值,并记录下来。

    实验时,通过在 debug 中调试,观察实验结果与理论分析是否一致,如不一致,尝试。

    发现问题所在,并分析原因。

    p71练习实验截图如下:

    练习实验分析:mov sp,10被执行了吗?

    在程序执行前,ax=0000,ss=0b39,sp=ffee
    在用T命令单步执行mov ax,2000后,ax=2000; ss=0b39;
    sp=ffee

    在用T命令单步执行mov ss,ax后,ax=2000;ss=2000;sp=0010

    注意,在用T命令单步执行mov ss,ax 前,ss=0b39,sp=ffee,而执行后ss=2000,sp=0010。ss变为2000是正常的,这正是mov ss,ax的执行结果。sp变为0010是在mov ss,ax之后,因为它就是mov ss,ax的下一条指令。显然,在用T命令执行mov ss,ax的时候,它的下一条指令 mov sp,10也紧接着执行了。

    实验任务(1):

    ①  截图记录:使用 e 命令修改 0021:0~0021:f 数据,及修改后查看是否正确写入的操作 

    ②  截图记录:使用 a 命令输入的 p74 指令 

    ③  截图记录:每一行指令单步调试(如单步调试步骤多,可分屏截图,但不要有遗漏)

    ④  P74 中指令执行后各个寄存器填空结果,以在文档中手工标注或手机拍照截图方式复制在文档中。 对于③单步调试的观察,与理论上分析的结果进行比较,检验是否一致。

    实验二是在机房做的,当时没有查看修改后地址。在自己电脑重新修改截图如下:

    前半部分输入a命令实验截图如下:

    t命令单步执行截图如下:

    第一部分得出结论:

    ax=3130

    ax=6462

    bx=3534

    bx=6C6A

    后两部分结果如下:

    sp=00FE;修改的内存单元的地址是 2200:FE到FF 内容为62   64 

    ax入栈 sp=sp-2=0100H-2  =00FEH

    sp=00FC;修改的内存单元的地址是 2200:FC到FD 内容为6A    6C     

    bx入栈  sp=sp-2=00FEH-2=00FCH           

    sp=00FE;ax=6C6A

    sp=0100;bx=6462

    push [4]                          sp=00FE;修改的内存单元的地址是  2200:FE到FF    内容为   34      35                

    push [6]                          sp=00FC;修改的内存单元的地址是  2200:FC到FD   内容为    36      37  

    由于疏忽,手写时错误的将得出结论的步骤弄错了一步,导致结果出现了上下相错的偏差,应注意。

    实验任务(2): 

    ①  截图记录图 3.19 中使用 a命令输入的 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,及修改后查看的部分 

    ②  单步调试每一行汇编指令的截图。且每一条指令单步调试后,都使用 d 命令查看

    2000:0~2000:f 的值。观察每一条指令执行后相关寄存器值的变化,及 2000:0~2000:f 单元值的变化,并思考原因。 

    用自己电脑做分步步骤如下:

    分析结论:

    初始的栈顶和栈底分别是2000:0010和2000:0010。

    如练习实验(3)一样,执行中断例程时,CPU会将一些中断例程使用的的寄存器变量自动压栈到栈中,包括了上述的寄存器变量的值,命令紧接着执行。

  • 相关阅读:
    java调用本地默认浏览器
    spark入门(helloworld插件)
    Android下 布局加边框 指定背景色 半透明
    Android下Fragment使用(全集)
    Android下的broadcast
    Android 下Service
    Android实用工具
    CSDN云盘资源
    Codeforces Round #201 (Div. 2). E--Number Transformation II(贪心)
    Codeforces Round #201.C-Alice and Bob
  • 原文地址:https://www.cnblogs.com/jasonIL/p/9863799.html
Copyright © 2011-2022 走看看