实验三 第一个汇编程序

Posted wlxnw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验三 第一个汇编程序相关的知识,希望对你有一定的参考价值。

 

 

一、练习一

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

 

 

 

 

技术分享图片

 

以上是关于实验三 第一个汇编程序的主要内容,如果未能解决你的问题,请参考以下文章

实验三

实验三

汇编实验三

实验三 编程编译连接跟踪

实验三 编程编译连接跟踪

汇编语言程序设计实验报告三