实验三 第一个汇编程序

一、练习一

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环境下的命令对汇编源程序进行编译、连接和运行,明白了计算机中程序的运行机制。对程序的运行有了更进一步的理解。

原文地址:https://www.cnblogs.com/wlxnw/p/9974887.html