• 实验三 第一个汇编程序


    一、练习一

    1、编写汇编源程序 t1.asm。

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

    汇编:

    该过程忽略了中间结果列表文件和交叉引用文件,最终得到了目标文件t1.obj

    汇编后在当前路径下会出现一个新文件,t1.obj(下图中的t1)

    连接:

     

    通过连接,t1.obj将变成t1.exe,如此便得到了可执行文件。

    该过程忽略了中间结果映像文件和库文件的连接(因为这个程序中没有调用任何子程序)。

    运行:

     

    结果为36.

    line4 line9 种寄存器 dl 的值分别修改为 0~9 中任何一个数字:

    重新汇编→ 连接→运行后结果如下:

    接下来,用 debug 对生成的可执行文件 t1.exe 进行调试。

    ①使用 r 命令查看。观察寄存器 cx 的值是 多少;观察寄存器 ds 和 cs 的值是多少,它们之间是否满足关系(cs)=(ds)+10H?

    cx=0016,ds=075A,cs=076A。满足(cs)=(ds)+10H

    ② PSP(程序段前缀)的头两个字节是CD 20, 用debug查看PSP的内容是否如此。

    结果却是是程序段前缀为CD 20。

    ③使用 u 命令对 t1.exe 进行反汇编:

    ④ 使用 t 命令和 p 命令(遇到 int 命令时,用 p 命令)单步调试,观察结果。

    二、练习二

    1、编写汇编源程序 t2.asm

    2、对源程序 t2.asm 进行汇编、连接、运行、调试

     

    完成汇编和连接并清屏后运行仍无结果。为什么呢???

    重新打开 t2.asm,尝试将源代码中 line7 0433h→0432h, line10 0436h→0439h,

    然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清屏后,再次观察程序运行结果。

    改完了,还是没有结果。郁闷。

    重新打开 t2.asm,尝试将源代码中 line7 的 0433h0333h, line10 0436h0336h,

    然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清屏后,再次观察程序运行结果。

    没有结果+1......

    总结与体会:

    通过这次实验我学会了利用dos环境下的命令对汇编源程序进行编译、连接和运行,明白了计算机中程序的运行机制。对程序的运行有了更进一步的理解。

  • 相关阅读:
    洛谷P3157 [CQOI2011]动态逆序对
    CDQ分治
    快速数论变换(NTT)
    洛谷P3338 [ZJOI2014]力
    洛谷 P1919 A*B Problem升级版
    0-1分数规划
    洛谷P4593 [TJOI2018]教科书般的亵渎
    拉格朗日插值
    20180912-3 词频统计
    20190912-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/wlxnw/p/9974887.html
Copyright © 2020-2023  润新知