汇编实验三汇编语⾔程序的调试与运⾏
⼀.实验⽬的
1.熟练掌握编写汇编语⾔原程序的基本框架
2.熟悉在PC机上编辑、汇编、连接、调试和运⾏汇编语⾔程序的过程。
⼆.实验内容
⼀个汇编语⾔程序从写出到最终执⾏的简要过程如下:
1) 编辑
可以⽤任意的⽂本编辑器来编辑源程序,只要最终将其存储为纯⽂本⽂件即可。⼀般保存为*.asm⽂件。
2) 编译
上机过程中,我们采⽤微软的masm5.0汇编编译器,⽂件名为。我们的编译器在C:\masm5⽬录下,可以按照下⾯的过程来进⾏源程序的编译,以C:\1.asm为例:
进⼊DOS⽅式,进⼊C:\masm5⽬录,运⾏,⾸先显⽰⼀些版本信息,然后提⽰输⼊将要被编译的源程序⽂件名。在输⼊源程序⽂件名时⼀定要指明路径,如果⽂件在当前路径下,只要输⼊⽂件名就可以,否则要输⼊全路径。在此,我们输⼊C:\1.asm.
输⼊源程序⽂件名后,程序继续提⽰我们输⼊要编译出的⽬标⽂件名,因为我们已经输⼊了源程序⽂件名为1.asm,则编译程序默认要输出的⽬标⽂件名为1.obj,所以我们可以不必另⾏指定⽂件名,直接按回车,编译程序将在当前⽬录下,⽣出1.obj⽂件。我们也可以指定⽣成的⽬标⽂件所在的⽬录,如想在“C:\windows\desktop”下⽣成⽬标⽂件1.obj,则可以输⼊“C:\windows\desktop\1”
确定了⽬标⽂件名称后,编译程序提⽰输⼊列表⽂件名称和交叉引⽤⽂件名称,这些时编译器将源程序编译为⽬标⽂件过程中产⽣的中间结果,我们直接按回车键忽略。
对源程序编译结束,编译器输出的最后两⾏告诉我们源程序是否有警告错误和必须要改正的错误。
3) 链接
对源程序进⾏编译得到⽬标⽂件后,需要对⽬标⽂件进⾏链接得到可执⾏⽂件。
我们使⽤微软的Overlay Linker3.6连接器,⽂件名为,假设连接器在C:\masm5⽬录下,我们按照下⾯的过程来进⾏程序的链接,以C:\masm5\1.obj为例
进⼊DOS⽅式,进⼊C:\masm5⽬录,运⾏,⾸先显⽰⼀些版本信息,然后提⽰输⼊将要被连接的⽬标⽂件名。此处我们输
⼊”1”,按回车.程序继续提⽰我们输⼊要⽣成的可执⾏⽂件的名称,这是我们对⼀个程序进⾏连接要得到的最终结果。这⾥我们不必另⾏指定⽂件名,直接按回车,链接程序将在当前⽬录下,⽣成1.exe⽂件。
确定了可执⾏⽂件的名称后,连接程序提⽰输⼊映像⽂件的名称和库⽂件的连接,我们直接按回车键忽略即可。
最后对⽬标⽂件的连接结束,连接程序输出的最后⼀⾏告诉我们源程序是否有错误。如果尽出现⼀个警告错误:“没有栈段”,我们可以不理会。
4) 执⾏和调试
将⽣成的可执⾏⽂件执⾏:C:\masm5&,看不到任何结果,因为我们的程序没有向显⽰器输出信息。
为了观察程序的运⾏过程,使⽤Debug的相关命令来单步执⾏程序,查看每⼀条指令的运⾏结果。
进⼊C:\masm5后,我们输⼊“”,按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命令单步执⾏
2. ⽤Debug跟踪t1.exe的执⾏过程,写出每⼀步执⾏后相关寄存器中的内容
3. PSP的前两个字节是CD 20,⽤Debug加载t1.exe,查看PSP的内容
PSP的具体功能以及⽤法将会在后⾯的实验中逐渐提到,在这⾥可以先提前了解⼀下,这⾥的PSP是程序段前缀,这⾥的CD20是INT20h的机器码,可以先了解到这⾥,我会⽤⼀篇专门的博客来解释psp。
四.实验报告
调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进⾏分析,对执⾏结果进⾏分析。