zoukankan      html  css  js  c++  java
  • 实验三 编程、编译、连接、跟踪

    四.实验结论

    练习一:

    (1)编写汇编程序:

    assume cs:code
    code segment
    mov ah,2
    mov dl,6
    add al,30h
    int 21h

    mov ah,2
    mov dl,5
    add dl,30
    int 21h

    mov ah,4ch
    int 21h
    code ends
    end

    (2)对源程序t1.asm进行汇编、连接、运行、调试。

    先进行编译:

    连接:

    运行结果:

    将第4行和第9行的数值分别改成4和5:

    运行结果如下:

    结果显示,出现了不同的图标,可能与寄存器中值有关。

    (3)对t1.exe进行调试

    用r命令进行查看:

    观察到cx的值为0015,ds值为075a,cs为076a。满足cs=ds+10。

    用debug查看psp内容,即从ds:0~ff

    可以看出开头是CD。

    使用u命令进行反汇编:

    因为从cs:ip所指向地址开始写入长度为15的代码,因此只要查看0~14

    用t命令和p命令进行单步调试:

    下一步是int命令要用p命令调试:

    出现图案。

    接着调试结束:

    练习2

    (1)编写汇编程序

    assume cs:code
    code segment
    mov ax,0b800h
    mov ds,ax

    mov bx,0
    mov [bx],0433h

    add bx,2
    mov [bx],0436h

    mov ax,4c00h
    int 21h
    code ends
    end

    (2)对源代码进行汇编,连接,运行,调试

    最后运行t2的时候什么都没有显示

    在cls之后出现了预期的红色36

    将源代码中line7的0433h→0432h,line10 的 0436h→0439h, 然后重新汇编、连接:

    发现数字变化了,颜色没有发生变化。

    将源代码中 line7 的 0433h→0333h,line10 的 0436h→0336h, 然后重新汇编、连接:

    发现数字没有变,颜色发生了变化。

    类似实验一,进行单步调试:

    用d命令查看bx内存,发现0336并没有存入内存中

    最后程序正常结束

    五.总结与体会

    从实验一可看出,当出现int 21中断时,用p命令进行单步调试,可以显示数值。

    从实验二可以看出,数据不能用mov指令直接写入内存单元。可以通过将数据存入显存中显示数值。

  • 相关阅读:
    Pods
    CentOS 7中firewall防火墙详解和配置以及切换为iptables防火墙
    windows IIS安装php服务及配置
    Linux最常用命令
    kubernetes 基本概念和资源对象汇总
    mysql集群压测
    mysql碰到的问题总结
    python字符串常用内建函数总结
    kubeadm常见报错和解决方法
    ubuntu部署kubeadm1.13.1高可用
  • 原文地址:https://www.cnblogs.com/makaya/p/9979283.html
Copyright © 2011-2022 走看看