masm汇编基础及上机

上传人:aa****6 文档编号:50762305 上传时间:2018-08-10 格式:PPT 页数:57 大小:671.50KB
返回 下载 相关 举报
masm汇编基础及上机_第1页
第1页 / 共57页
masm汇编基础及上机_第2页
第2页 / 共57页
masm汇编基础及上机_第3页
第3页 / 共57页
masm汇编基础及上机_第4页
第4页 / 共57页
masm汇编基础及上机_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《masm汇编基础及上机》由会员分享,可在线阅读,更多相关《masm汇编基础及上机(57页珍藏版)》请在金锄头文库上搜索。

1、微机原理与汇编语言第4章 MASM汇编基础及上机 4.6 汇编程序的编写与执行4.7 调试程序DEBUG的使用 第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.1 一个汇编语言程序从写出到最终 执行的简要过程编写-编译-连接-执行演示1.编写汇编源程序使用文本编辑器(如Edit、记事本等) ,用汇编语言编写汇编源程序。2.对源程序进行编译连接w使用汇编语言编译程序对源程序文 件中的源程序进行编译,产生目标 文件;w再用连接程序对目标文件进行连接 ,生成可在操作系统中直接运行的 可执行文件。3.可执行文件w可执行文件中包含两部分内容:v程序(从原程序中的汇编指令翻译过 来的机器

2、码)和数据(源程序中定义 的数据)v相关的描述信息(比如:程序有多大 、要占多少内存空间等)4.执行可执行文件中的程序w在操作系统中,执行可执行文件中 的程序。w操作系统依照可执行文件中的描述 信息,将可执行文件中的机器码和 数据加载入内存,并进行相关的初 始化(比如:设置CS:IP指向第一 条要执行的指令),然后由CPU执 行程序。第4章 MASM汇编基础及上机assumecodesgXXX segmentXXX endsend4.6 汇编程序的编写与执行4.6.2 源程序寄存器与段的关联假设wassume:含义为“假设”。w它假设某一段寄存器和程序中的某 一个用 segment ends

3、定义的段 相关联。w通过assume说明这种关联,在需要 的情况下 ,编译程序可以将段寄存 器和某一个具体的段相联系。标号w一个标号指代了一个地址。wcodesg:放在segment的前面,作 为一个段的名称,这个段的名称最终 将被编译、连接程序处理为一个段的 段地址。定义一个段w segment和ends是一对成对使用的伪指令 ,这是在写可被编译器编译的汇编程序时 ,必须要用到的一对伪指令。 w segment和ends的功能是定义一个段, segment说明一个段开始,ends 说明一个 段结束。 w 一个段必须有一个名称来标识,使用格式 为:段名 segment段名 ends定义一个段w

4、一个汇编程序是由多个段组成的,这 些段被用来存放代码、数据或当作栈 空间来使用。w一个有意义的汇编程序中至少要有一 个段,这个段用来存放代码。程序结束标记wEnd 是一个汇编程序的结束标记, 编译器在编译汇编程序的过程中, 如果碰到了伪指令 end,就结束对 源程序的编译。w如果程序写完了,要在结尾处加上 伪指令end 。否则,编译器在编译 程序时,无法知道程序在何处结束 。w注意:不要搞混了end和ends。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.2 源程序程序的结构v定义一个段v实现处理任务v程序结束v段与段寄存器关联语法错误和逻辑错误语法错误 程序在编译时被编译

5、器发现的错误; 容易发现。assum cs:codesgcodesg segmentstart:mov ax,0123hmov bx,0456hadd ax,bxadd ax,axmov ax,4c00hint 21h codesg ends end start语法错误和逻辑错误逻辑错误w 程序在编译时不能表现出来的、在运行时 发生的错误不容易发现。assume cs:codesgcodesg segmentstart:mov ax,0123hmov bx,0456hadd ax,bxadd ax,axcodesg endsmov ax,4c00hint 21hend start第4章 MAS

6、M汇编基础及上机4.6 汇编程序的编写与执行4.6.2 源程序打开“记事本”程序,在其中编辑程序,如下图所示:第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.3 编译v进入DOS方式,进入 D:masm 目录,运行 masm.exe。v如果源程序文件不是以 asm为扩展名的话,就 要输入它的全名。比如1.txt。v在输入源程序文件名的时候一定要指明它所在 的路径。如果文件就在当前路径下,只输入文 件名就可以。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.3 编译v输入要编译的源文件文件名后,按 Enter键。v目标文件(*.obj)是我们对一个源程序进行编

7、 译要得到的最终结果。v编译程序默认要输出的目标文件名为1.obj,所 以可以不必再另行指定文件名。第4章 MASM汇编基础及上机 4.6 汇编程序的编写与执行4.6.3 编译v列表文件是编译器将源程序编译为目标 文件的过程中产生的中间结果。v可以不生成这个文件,直接按 Enter键 即可。第4章 MASM汇编基础及上机 4.6 汇编程序的编写与执行4.6.3 编译v编译程序提示输入交叉引用文件的名称。v这个文件同列表文件一样,是编译器将源程 序编译为目标文件过程中产生的中间结果。v可以不生成这个文件,直接按 Enter 键即可 。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行 4

8、.6.3 编译 v对源程序的编译结束,编译器输出的最后两 行告诉我们这个源程序没有警告错误和必须 要改正的错误。v一般来说,有两类错误使我们得不到所期望 的目标文件: (1)我们程序中有“Severe Errors”; (2)找不到所给出的源程序文件。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.4 连接v在对源程序进行编译得到目标文件后, 我们需要对目标文件进行连接,从而得 到可执行文件。v继续上一节的过程,我们再将 D:masm1.obj连接为D:masm1.exe。第4章 MASM汇编基础及上机 4.6 汇编程序的编写与执行 4.6.4 连接v进入DOS方式,进入C:

9、masm目录,运行 link.exe。v在输入目标文件名的时候,要注意指明它所 在的路径。这里,我们要连接的文件是当前 路径下1.obj,所以此处输入“1”。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行 4.6.4 连接v输入要连接的目标文件名后,按Enter键。v可执行文件是我们对一个程序进行连接要得 到的最终结果。v连接程序默认要输出的可执行文件名为 1.EXE ,所以可以不必再另行指定文件名。v我们直接按 Enter 键,使用连接程序设定的 可执行文件名。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.4 连接v映像文件是连接程序将目标文件连接为可执 行文

10、件过程中产生的中间结果。v可以不生成这个文件,直接按 Enter 键即可。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.4 连接v连接程序提示输入库文件的名称。v库文件里包含了一些可以调用的子程序,如果我们的程序 中调用了某一个库文件中的子程序,就需要在连接的时候 ,将这个库文件和我们的目标文件连接到一起,生成可执 行文件。v如果没有调用任何子程序,直接按Enter键即可。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.4 连接v这时我们得到了一个新的文件 1.exe 。当然,如果连接过程中出现错误,那么我们将得不到这个可执行文件。v对目标文件的连接结束,

11、连接程序输出的最后一行告诉我 们,这个程序有一个警告错误:“没有栈段” ,这里我们不理会这个错误。连接连接的作用有以下几个:w 当源程序很大时,可以将它分为多个源程 序文件来编译,每个源程序编译成为目标 文件后,再用连接程序将它们连接到一起 ,生成一个可执行文件;w 程序中调用了某个库文件中的子程序,需 要将这个库文件和该程序生成的目标文件 连接到一起,生成一个可执行文件;连接连接的作用有以下几个(续):w 一个源程序编译后,得到了存有机器码的 目标文件,目标文件中的有些内容还不能 直接用来生成可执行文件,连接程序将这 此内容处理为最终的可执行信息。w 所以,在只有一个源程序文件,而又不 需要

12、调用某个库中的子程序的情况下,也 必须用连接程序对目标文件进行处理,生 成可执行文件。w 注意,对于连接的过程,可执行文件是我 们要得到的最终结果。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行 4.6.5 执行v现在,终于将我们的第一个汇编程序加工成了 一个可在操作系统下执行的程序文件。1.exe的 执行情况:v程序到底运行没有?v程序当然运行了,只是从屏幕上不可能看到任 何运行结果。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行4.6.5 执行v我们的程序没有像显示器输出任何信息。程 序只是做了一些将数据送入寄存器和加法的 操作,而这些事情,我们不可能从显示屏上 看

13、出来。v程序执行完成后,返回,屏幕上再次出现操 作系统的提示符。v可执行文件中的程序装入内存并运行的原理可执行文件中的程序装入内存并运行的原理w DOS是一个单任务操作系统。w 在DOS中,可执行文件中的程序P2若要 运行,必须有一个正在运行的程序P1 , 将 P2从可执行文件中加载入内存,将 CPU的控制权交给它,P2才能得以运行 ; P2开始运行后,P1暂停运行。w 当P2运行完毕后,应该将CPU的控制权 交还给使它得以运行的程序P1。此后, P1继续运行。w 1.exe的执行过程可执行文件中的程序装入内存并运行的原理w1.exe的执行过程:(1)我们在提示符“D:masm”后面输入 可执

14、行文件的名字“1”,按Enter键。(2)1.exe中的程序运行;问题1(3)运行结束,返回,再次显示提示符 “D:masm”。问题2w问题1 v执行第(1)步操作时,有一个正在运行的 程序将1.exe中的程序加载入内存,这个正 在运行的程序是什么? v它将程序加载入内存后,如何使程序得以 运行? w结论 v在DOS中直接执行 1.exe 时,是正在运行 的command将1.exe中的程序加载入内存 。 vcommand设置CPU的CS:IP指向程序的第 一条指令(即程序的入口),从而使程序得 以运行。w问题2v执行第(3)步操作,程序运行结束后,返回到哪里?w结论v程序运行结束后,返回到c

15、ommand 中,CPU继续运行command。第4章 MASM汇编基础及上机4.6 汇编程序的编写与执行汇编程序从写出到执行的过程:1.编写源程序1.txt2.编译masm 1.txt 1.obj3.连接link 1.obj 1.exe4.加载到内存并运行第4章 MASM汇编基础及上机4.7 调试程序Debug的使用w 为了观察程序的运行过程 ,我们可以使用 Debug。w Debug 可以将程序加载入内存,设置 CS:IP指向程序的入口,但Debug并不放 弃对CPU 的控制,这样,我们就可以使用 Debug 的相关命令来单步执行程序 ,查看 每条指令的执行结果。第4章 MASM汇编基础及

16、上机4.7 调试程序Debug的使用w接下来可以用R命令看一下各个寄存 器的设置情况:w可以看到,Debug将程序从可执行文 件加载入内存后,CX寄存器中存放的 是程序的长度。1.exe 中程序的机器 码共有15个字节。第4章 MASM汇编基础及上机4.7 调试程序Debug的使用w用U命令查看一下其他指令:第4章 MASM汇编基础及上机4.7 调试程序Debug的使用w用T命令单步执行程序中的每一条指令 ,并观察每条指令的执行结果。第4章 MASM汇编基础及上机4.7 调试程序Debug的使用w到了 int 21,要用P命令执行:wint 21 执行后,显示“Program terminated normally”,返回到 Debug中。w表示程序正常结束。第4章 MASM汇编基础及上机4.7 调试程序Debug的使用w 最后,使用Q命令退出Debug,将返回到 command中,因为Debug是由command 加载运行的。w 如果需要退出DOS,请输入exit并回车。第4章 MASM汇编基础及上机w 需要注意的是,在 DOS 中运行

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号