zoukankan      html  css  js  c++  java
  • 汇编语言(王爽)实验三 编程、编译、连接、跟踪

    (1)将下面程序保存为t1.asm,生成可执行文件t1.exe。

    assume cs:codesg
    
    codesg segment
       mov ax,2000H
       mov ss,ax
       mov sp,0
       add sp,10
       pop ax
       pop bx
       push ax
       push bx
       pop ax
       pop bx
    
       mov ax,4c00H
       int 21H
    
    codesg ends
    
    end

    (2)用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶内容。
     step 0:通过debug t1.exe加载程序后:

    ax=0000H;bx=0000H;

    cx=0016H(表示程序长度,为22个字节);

    ds=13D5H(表示操作系统给t1.exe分配的空闲区域的段地址);

    cs=13e5H(=ds+10H,与之前描述一致);

    ss=13e5H,sp=0000H;通过d 13e5:0 1命令查看栈顶内容,为00b8H;

    step1:单步执行第一条指令后:

    ax=2000H;bx=0000H;

    其余cx,ds,cs,ss,sp均不变;

    此时栈顶内容理应不变,查看依旧为00b8H;

    step2:单步执行第二条指令后,自动连带执行第三条指令:

    ax=2000H;bx=0000H;

    其余cx,ds,cs均不变;ss和sp被重置,栈顶指向:2000:0,查看栈顶内容,为:0ff1H;

    step3:单步执行第四条指令后:

    ax=2000H;bx=0000H;

    其余cx,ds,cs,ss均不变;sp被重置,栈顶指向:2000:0a,查看栈顶内容,为:615fH;

    step4:单步执行第五条指令后:

    ax=615fH(与上一步所得一致);bx=0000H;

    其余cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0c,查看栈顶内容,为:0DF0H;

    ----------因重新debug,导致前后ax不一致-----------

    step5:单步执行第六条指令后:

    ax=13e5H;bx=0DF0H(与上一步所得一致);

    其余cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0E,查看栈顶内容,为:0B16H;

    step6:单步执行第七条指令后:

    ax=13e5H;bx=0DF0H;

    其余cx,ds,cs,ss均不变;sp=sp-2,栈顶指向:2000:0C,查看栈顶内容,为:13E5H(与AX一致);

    step7:单步执行第八条指令后:

    ax,bx,cx,ds,cs,ss均不变;sp=sp-2,栈顶指向:2000:0A,查看栈顶内容,为:0DF0H(与BX一致);

    step8:单步执行第九条指令后:

    ax=0DF0H(与上步查看一致);

    bx,cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0C,查看栈顶内容,为:13E5H;

    step9:单步执行第十条指令后:

    bx=13E5H(与上步查看一致);

    ax,cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0E,查看栈顶内容,为:0B16H;

    (3)PSP头两个字节为CD 20,用debug加载t1.exe.查看PSP内容:

    PSP区域地址范围为:ds:0~ds:ff.

  • 相关阅读:
    C#程序调用cmd.exe执行命令
    JS正则表达式之特殊符号
    Java设计模式之策略模式
    Java基础之多态
    Filter过滤器笔记1
    Servlet笔记1
    jsp笔记3(内置对象)
    jsp笔记2(编译指令与动作指令)
    jsp笔记1(基本原理与语法)
    xml文件生成与下载
  • 原文地址:https://www.cnblogs.com/tsembrace/p/3223419.html
Copyright © 2011-2022 走看看