汇编实验三 汇编语言程序的调试与运行

一.实验目的
1.熟练掌握编写汇编语言原程序的基本框架
2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容
一个汇编语言程序从写出到最终执行的简要过程如下:
1) 编辑
可以用任意的文本编辑器来编辑源程序,只要最终将其存储为纯文本文件即可。一般保存为*.asm文件。
2) 编译
上机过程中,我们采用微软的masm5.0汇编编译器,文件名为masm.exe。我们的编译器在C:\masm5目录下,可以按照下面的过程来进行源程序的编译,以C:\1.asm为例:
进入DOS方式,进入C:\masm5目录,运行masm.exe,首先显示一些版本信息,然后提示输入将要被编译的源程序文件名。在输入源程序文件名时一定要指明路径,如果文件在当前路径下,只要输入文件名就可以,否则要输入全路径。在此,我们输入C:\1.asm.
输入源程序文件名后,程序继续提示我们输入要编译出的目标文件名,因为我们已经输入了源程序文件名为1.asm,则编译程序默认要输出的目标文件名为1.obj,所以我们可以不必另行指定文件名,直接按回车,编译程序将在当前目录下,生出1.obj文件。我们也可以指定生成的目标文件所在的目录,如想在“C:\windows\desktop”下生成目标文件1.obj,则可以输入“C:\windows\desktop\1”
确定了目标文件名称后,编译程序提示输入列表文件名称和交叉引用文件名称,这些时编译器将源程序编译为目标文件过程中产生的中间结果,我们直接按回车键忽略。
对源程序编译结束,编译器输出的最后两行告诉我们源程序是否有警告错误和必须要改正的错误。
3) 链接
对源程序进行编译得到目标文件后,需要对目标文件进行链接得到可执行文件。
我们使用微软的Overlay Linker3.6连接器,文件名为link.exe,假设连接器在C:\masm5目录下,我们按照下面的过程来进行程序的链接,以C:\masm5\1.obj为例
进入DOS方式,进入C:\masm5目录,运行link.exe,首先显示一些版本信息,然后提示输入将要被连接的目标文件名。此处我们输入”1”,按回车.程序继续提示我们输入要生成的可执行文件的名称,这是我们对一个程序进行连接要得到的最终结果。这里我们不必另行指定文件名,直接按回车,链接程序将在当前目录下,生成1.exe文件。
确定了可执行文件的名称后,连接程序提示输入映像文件的名称和库文件的连接,我们直接按回车键忽略即可。
最后对目标文件的连接结束,连接程序输出的最后一行告诉我们源程序是否有错误。如果尽出现一个警告错误:“没有栈段”,我们可以不理会。
4) 执行和调试
将生成的可执行文件执行:C:\masm5>1.exe,看不到任何结果,因为我们的程序没有向显示器输出信息。
为了观察程序的运行过程,使用Debug的相关命令来单步执行程序,查看每一条指令的运行结果。
进入C:\masm5后,我们输入“Debug 1.exe”,按Enter键,Debug将程序从1.exe中加载到内存,进行相关的初始化后设置CS:IP指向程序的入口。使用R命令查看各个寄存器的设置情况,使用U命令来查看我们写入的指令,使用T命令单步执行程序中的每一条指令,到达int 21,使用P命令执行,执行后,显示“Program terminated normally”,返回到Debug,表示程序正常结束。
注意:在DOS中运行程序时,是Command将程序加载到内存,所以程序运行结束后返回到command中,而在这里是debug将程序加载到内存,所以程序运行结束后返回到debug中。
三.实验任务

  1. 将下面的程序保存为t1.asm文件,生成可执行文件t1.exe;
    assume cs:codesg
    codesg segment
    mov ax,2000h
    mov ss,ax
    mov sp,0
    add sp,4
    pop ax
    pop bx
    push ax
    push bx
    pop ax
    pop bx
    mov ax,4c00h
    int 21h
    codesg ends
    end

记录第一次出错:没有把t1.asm文件放在MASM611的BIN文件下。放入之后出现“Assembling:t1.asm”.
在这里插入图片描述
小结:汇编语言程序的汇编以及建立过程:
编辑程序生成asm文件(t1.asm)——>汇编程序(masm t1.asm),将asm文件转换成ti.obj文件——>用LINK程序把obj文件转换成exe文件(link t1.obj)——>最后一步执行可以选择直接执行也可以选择使用debug命令单步执行

  1. 用Debug跟踪t1.exe的执行过程,写出每一步执行后相关寄存器中的内容
    在这里插入图片描述

在这里插入图片描述

  1. PSP的前两个字节是CD 20,用Debug加载t1.exe,查看PSP的内容
    PSP的具体功能以及用法将会在后面的实验中逐渐提到,在这里可以先提前了解一下,这里的PSP是程序段前缀,这里的CD20是INT20h的机器码,可以先了解到这里,我会用一篇专门的博客来解释psp。在这里插入图片描述
    四.实验报告
    调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值