MASM汇编基础及上机

上传人:仙*** 文档编号:74724881 上传时间:2022-04-14 格式:PPT 页数:69 大小:642.50KB
收藏 版权申诉 举报 下载
MASM汇编基础及上机_第1页
第1页 / 共69页
MASM汇编基础及上机_第2页
第2页 / 共69页
MASM汇编基础及上机_第3页
第3页 / 共69页
资源描述:

《MASM汇编基础及上机》由会员分享,可在线阅读,更多相关《MASM汇编基础及上机(69页珍藏版)》请在装配图网上搜索。

1、微机原理与汇编语言微机原理与汇编语言第第4章章 MASM汇编基础及上机汇编基础及上机 4.6 汇编程序的编写与执行汇编程序的编写与执行 4.7 调试程序调试程序DEBUG的使用的使用 第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.1 一个汇编语言程序从写出到最终一个汇编语言程序从写出到最终执行的简要过程执行的简要过程 编写编写-编译编译-连接连接-执行执行演示演示1.编写汇编源程序编写汇编源程序使用文本编辑器(如使用文本编辑器(如Edit、记事本等),、记事本等),用汇编语言编写汇编源程序。用汇编语言编写汇编源程序。2.对源程序进行编译

2、连接对源程序进行编译连接w使用汇编语言编译程序对源程序文使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标件中的源程序进行编译,产生目标文件;文件;w再用连接程序对目标文件进行连接,再用连接程序对目标文件进行连接,生成可在操作系统中直接运行的生成可在操作系统中直接运行的可可执行文件执行文件。3.可执行文件可执行文件w可执行文件中包含两部分内容:可执行文件中包含两部分内容:v程序(从原程序中的汇编指令翻译过程序(从原程序中的汇编指令翻译过来的机器码)和数据(源程序中定义来的机器码)和数据(源程序中定义的数据)的数据)v相关的描述信息(比如:程序有多大、相关的描述信息(比如:程序有多大、

3、要占多少内存空间等)要占多少内存空间等)4.执行可执行文件中的程序执行可执行文件中的程序w在操作系统中,执行可执行文件中在操作系统中,执行可执行文件中的程序。的程序。w操作系统依照可执行文件中的描述操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初数据加载入内存,并进行相关的初始化(比如:设置始化(比如:设置CS:IP指向第一指向第一条要执行的指令),然后由条要执行的指令),然后由CPU执执行程序。行程序。第第4章章 MASM汇编基础及上机汇编基础及上机assumecodesg XXX segment XXX ends en

4、d 4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.2 源程序源程序寄存器与段的关联假设寄存器与段的关联假设wassume:含义为:含义为“假设假设”。w它假设某一段寄存器和程序中的某它假设某一段寄存器和程序中的某一个用一个用 segment ends 定义的段定义的段相关联。相关联。w通过通过assume说明这种关联,在需要说明这种关联,在需要的情况下的情况下 ,编译程序可以将段寄存,编译程序可以将段寄存器和某一个具体的段相联系。器和某一个具体的段相联系。标号标号w一个标号指代了一个地址。一个标号指代了一个地址。wcodesg:放在:放在segment的前面,作的前面,作为一个段的名

5、称,这个段的名称最终为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的将被编译、连接程序处理为一个段的段地址。段地址。定义一个段定义一个段w segment和和ends是一对成对使用的伪指令,是一对成对使用的伪指令,这是在写可被编译器编译的汇编程序时,这是在写可被编译器编译的汇编程序时,必须要用到的一对伪指令。必须要用到的一对伪指令。w segment和和ends的功能是定义一个段,的功能是定义一个段,segment说明一个段开始,说明一个段开始,ends 说明一说明一个段结束。个段结束。w 一个段必须有一个名称来标识,使用格式一个段必须有一个名称来标识,使用格式为:为: 段名段

6、名 segment 段名段名 ends定义一个段定义一个段w一个汇编程序是由多个段组成的,这一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈些段被用来存放代码、数据或当作栈空间来使用。空间来使用。w一个有意义的汇编程序中至少要有一一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。个段,这个段用来存放代码。程序结束标记程序结束标记wEnd 是一个汇编程序的结束标记,是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,编译器在编译汇编程序的过程中,如果碰到了伪指令如果碰到了伪指令 end,就结束对,就结束对源程序的编译。源程序的编译。w如果程序写完了,要在结尾处加上如果

7、程序写完了,要在结尾处加上伪指令伪指令end 。否则,编译器在编译。否则,编译器在编译程序时,无法知道程序在何处结束。程序时,无法知道程序在何处结束。w注意:不要搞混了注意:不要搞混了end和和ends。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.2 源程序源程序程序的结构程序的结构v定义一个段定义一个段v实现处理任务实现处理任务v程序结束程序结束v段与段寄存器关联段与段寄存器关联 语法错误和逻辑错误语法错误和逻辑错误 语法错误语法错误程序在编译时被编译器发现的错误;程序在编译时被编译器发现的错误;容易发现。容易发现。 assum c

8、s:codesgcodesg segment start:mov ax,0123h mov bx,0456h add ax,bx add ax,ax mov ax,4c00h int 21hcodesg endsend start语法错误和逻辑错误语法错误和逻辑错误 逻辑错误逻辑错误w 程序在编译时不能表现出来的、在运行时程序在编译时不能表现出来的、在运行时发生的错误不容易发现。发生的错误不容易发现。 assume cs:codesgcodesg segment start:mov ax,0123h mov bx,0456h add ax,bx add ax,axcodesg ends mov

9、 ax,4c00h int 21hend start第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.2 源程序源程序打开打开“记事本记事本”程序,在其中编辑程序,如下图所示:程序,在其中编辑程序,如下图所示:第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v进入进入DOS方式,进入方式,进入 D:masm 目录,运行目录,运行masm.exe。v如果源程序文件不是以如果源程序文件不是以 asm为扩展名的话,就为扩展名的话,就要输入它的全名。比如要输入它的全名。比如1.tx

10、t。v在输入源程序文件名的时候一定要指明它所在在输入源程序文件名的时候一定要指明它所在的路径。如果文件就在当前路径下,只输入文的路径。如果文件就在当前路径下,只输入文件名就可以。件名就可以。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v输入要编译的源文件文件名后,按输入要编译的源文件文件名后,按 Enter键。键。v目标文件(目标文件(*.obj)是我们对一个源程序进行编)是我们对一个源程序进行编译要得到的最终结果。译要得到的最终结果。v编译程序默认要输出的目标文件名为编译程序默认要输出的目标文件名为1.obj,所,所以可

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

12、将源程这个文件同列表文件一样,是编译器将源程序编译为目标文件过程中产生的中间结果。序编译为目标文件过程中产生的中间结果。v可以不生成这个文件,直接按可以不生成这个文件,直接按 Enter 键即可。键即可。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v对源程序的编译结束,编译器输出的最后两对源程序的编译结束,编译器输出的最后两行告诉我们这个源程序没有警告错误和必须行告诉我们这个源程序没有警告错误和必须要改正的错误。要改正的错误。v一般来说,有两类错误使我们得不到所期望一般来说,有两类错误使我们得不到所期望的目标文件:的目标文

13、件:(1)我们程序中有)我们程序中有“Severe Errors”;(2)找不到所给出的源程序文件。)找不到所给出的源程序文件。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v在对源程序进行编译得到目标文件后,在对源程序进行编译得到目标文件后,我们需要对目标文件进行连接,从而得我们需要对目标文件进行连接,从而得到可执行文件。到可执行文件。v继续上一节的过程,我们再将继续上一节的过程,我们再将D:masm1.obj连接为连接为D:masm1.exe。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇

14、编程序的编写与执行4.6.4 连接连接v进入进入DOS方式,进入方式,进入C:masm目录,运行目录,运行link.exe。v在输入目标文件名的时候,要注意指明它所在输入目标文件名的时候,要注意指明它所在的路径。这里,我们要连接的文件是当前在的路径。这里,我们要连接的文件是当前路径下路径下1.obj,所以此处输入,所以此处输入“1”。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v输入要连接的目标文件名后,按输入要连接的目标文件名后,按Enter键。键。v可执行文件是我们对一个程序进行连接要得可执行文件是我们对一个程序进行连

15、接要得到的最终结果。到的最终结果。v连接程序默认要输出的可执行文件名为连接程序默认要输出的可执行文件名为 1.EXE ,所以可以不必再另行指定文件名。,所以可以不必再另行指定文件名。v我们直接按我们直接按 Enter 键,使用连接程序设定的键,使用连接程序设定的可执行文件名。可执行文件名。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v映像文件是连接程序将目标文件连接为可执映像文件是连接程序将目标文件连接为可执行文件过程中产生的中间结果。行文件过程中产生的中间结果。v可以不生成这个文件,直接按可以不生成这个文件,直接按 En

16、ter 键即可。键即可。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v连接程序提示输入库文件的名称。连接程序提示输入库文件的名称。v库文件里包含了一些可以调用的子程序,如果我们的程库文件里包含了一些可以调用的子程序,如果我们的程序中调用了某一个库文件中的子程序,就需要在连接的序中调用了某一个库文件中的子程序,就需要在连接的时候,将这个库文件和我们的目标文件连接到一起,生时候,将这个库文件和我们的目标文件连接到一起,生成可执行文件。成可执行文件。v如果没有调用任何子程序,直接按如果没有调用任何子程序,直接按Enter键即可。

17、键即可。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v这时我们得到了一个新的文件这时我们得到了一个新的文件 1.exe 。当然,如果连接。当然,如果连接过程中出现错误,那么我们将得不到这个可执行文件。过程中出现错误,那么我们将得不到这个可执行文件。v对目标文件的连接结束,连接程序输出的最后一行告诉对目标文件的连接结束,连接程序输出的最后一行告诉我们,这个程序有一个警告错误:我们,这个程序有一个警告错误:“没有栈段没有栈段” ,这里,这里我们不理会这个错误。我们不理会这个错误。连接连接连接的作用有以下几个:连接的作用有以下几

18、个:w 当源程序很大时,可以将它分为多个源程当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,文件后,再用连接程序将它们连接到一起,生成一个可执行文件;生成一个可执行文件;w 程序中调用了某个库文件中的子程序,需程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;连接到一起,生成一个可执行文件;连接连接连接的作用有以下几个(续):连接的作用有以下几个(续):w 一个源程序编译后,得到了存有机器码的一个源程序编译后

19、,得到了存有机器码的目标文件,目标文件中的有些内容还不能目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这直接用来生成可执行文件,连接程序将这此内容处理为最终的可执行信息。此内容处理为最终的可执行信息。w 所以,在只有一个源程序文件,而又不所以,在只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也需要调用某个库中的子程序的情况下,也必须用连接程序对目标文件进行处理,生必须用连接程序对目标文件进行处理,生成可执行文件。成可执行文件。w 注意,对于连接的过程,可执行文件是我注意,对于连接的过程,可执行文件是我们要得到的最终结果。们要得到的最终结果。第第4章章 MA

20、SM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.5 执行执行v现在,终于将我们的第一个汇编程序加工成了现在,终于将我们的第一个汇编程序加工成了一个可在操作系统下执行的程序文件。一个可在操作系统下执行的程序文件。1.exe的执行情况:的执行情况:v程序到底运行没有?程序到底运行没有?v程序当然运行了,只是从屏幕上不可能看到任程序当然运行了,只是从屏幕上不可能看到任何运行结果。何运行结果。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.5 执行执行v我们的程序没有像显示器输出任何信息。程我们的程序没有像

21、显示器输出任何信息。程序只是做了一些将数据送入寄存器和加法的序只是做了一些将数据送入寄存器和加法的操作,而这些事情,我们不可能从显示屏上操作,而这些事情,我们不可能从显示屏上看出来。看出来。v程序执行完成后,返回,屏幕上再次出现操程序执行完成后,返回,屏幕上再次出现操作系统的提示符。作系统的提示符。v可执行文件中的程序装入内存并运行的原理可执行文件中的程序装入内存并运行的原理可执行文件中的程序装入内存并运行的原理可执行文件中的程序装入内存并运行的原理w DOS是一个单任务操作系统。是一个单任务操作系统。w 在在DOS中,可执行文件中的程序中,可执行文件中的程序P2若要若要运行,必须有一个正在运

22、行的程序运行,必须有一个正在运行的程序P1 ,将将 P2从可执行文件中加载入内存,将从可执行文件中加载入内存,将CPU的控制权交给它,的控制权交给它,P2才能得以运行;才能得以运行; P2开始运行后,开始运行后,P1暂停运行。暂停运行。w 当当P2运行完毕后,应该将运行完毕后,应该将CPU的控制权的控制权交还给使它得以运行的程序交还给使它得以运行的程序P1。此后,。此后,P1继续运行。继续运行。w 1.exe的执行过程的执行过程可执行文件中的程序装入内存并运行的原理可执行文件中的程序装入内存并运行的原理w1.exe的执行过程:的执行过程:(1)我们在提示符)我们在提示符“D:masm”后面输后

23、面输入可执行文件的名字入可执行文件的名字“1”,按,按Enter键。键。(2)1.exe中的程序运行;中的程序运行; 问题问题1(3)运行结束,返回,再次显示提示符)运行结束,返回,再次显示提示符“D:masm”。 问题问题2w问题问题1v执行第(执行第(1)步操作时,有一个正在运行的)步操作时,有一个正在运行的程序将程序将1.exe中的程序加载入内存,这个正中的程序加载入内存,这个正在运行的程序是什么?在运行的程序是什么?v它将程序加载入内存后,如何使程序得以它将程序加载入内存后,如何使程序得以运行?运行?w结论结论v在在DOS中直接执行中直接执行 1.exe 时,是正在运行时,是正在运行的

24、的command将将1.exe中的程序加载入内存。中的程序加载入内存。vcommand设置设置CPU的的CS:IP指向程序的第指向程序的第一条指令(即程序的入口),从而使程序得一条指令(即程序的入口),从而使程序得以运行。以运行。w问题问题2v执行第(执行第(3)步操作,程序运行结束)步操作,程序运行结束后,返回到哪里?后,返回到哪里?w结论结论v程序运行结束后,返回到程序运行结束后,返回到command中,中,CPU继续运行继续运行command。第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行汇编程序从写出到执行的过程:汇编程序从写出到执行的

25、过程: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 的相关命令来单步执行程序的相关命

26、令来单步执行程序 ,查看,查看每条指令的执行结果。每条指令的执行结果。第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用w接下来可以用接下来可以用R命令看一下各个寄存命令看一下各个寄存器的设置情况:器的设置情况:w可以看到,可以看到,Debug将程序从可执行文将程序从可执行文件加载入内存后,件加载入内存后,CX寄存器中存放的寄存器中存放的是程序的长度。是程序的长度。1.exe 中程序的机器中程序的机器码共有码共有15个字节。个字节。第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用w用用U命令查看一下其他指

27、令:命令查看一下其他指令:第第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汇编基础及上机

28、汇编基础及上机4.7 调试程序调试程序Debug的使用的使用w 最后,使用最后,使用Q命令退出命令退出Debug,将返回到,将返回到command中,因为中,因为Debug是由是由command加载运行的。加载运行的。w 如果需要退出如果需要退出DOS,请输入,请输入exit并回车。并回车。第第4章章 MASM汇编基础及上机汇编基础及上机w 需要注意的是,在需要注意的是,在 DOS 中运行程序时,中运行程序时,是是command将程序加载入内存;将程序加载入内存;w 所以程序运行结束后返回到所以程序运行结束后返回到command中,而在这里是中,而在这里是debug 将程序加载入内将程序加载入

29、内存,所以程序运行结束后要返回到存,所以程序运行结束后要返回到Debug中。中。w 我们在我们在 DOS中用中用 “Debug 1.exe” 运行运行Debug对对1.exe进行跟踪时,程序加载的进行跟踪时,程序加载的顺序是:顺序是:command加载加载Debug,Debug加载加载1.exe。w 返回的顺序是:从返回的顺序是:从1.exe中的程序返回到中的程序返回到Debug,从,从Debug返回到返回到command。第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用启动启动Debugv启动启动 Debug,它是可用于测试和调试,它是可用于测试

30、和调试 MS-DOS 可执行文件的程序。可执行文件的程序。 wDebug drive:path filename parameters drive:path filename 指定要测试的可执行文件的位置和名称。指定要测试的可执行文件的位置和名称。 parameters 指定要测试的可执行文件所需要的任何指定要测试的可执行文件所需要的任何命令行信息。命令行信息。第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用Debug 命令命令 ? 显示显示 Debug 命令列表。命令列表。 a 汇编汇编 8086/8087/8088 记忆码。记忆码。 c 比较内

31、存的两个部分。比较内存的两个部分。 d 显示部分内存的内容。显示部分内存的内容。 e 从指定地址开始,将数据输入到内存。从指定地址开始,将数据输入到内存。 f 使用指定值填充一段内存。使用指定值填充一段内存。 g 运行在内存中的可执行文件。运行在内存中的可执行文件。 h 执行十六进制运算。执行十六进制运算。 i 显示来自特定端口的显示来自特定端口的 1 字节值。字节值。 l 将文件或磁盘扇区内容加载到内存。将文件或磁盘扇区内容加载到内存。 m 复制内存块中的内容复制内存块中的内容n 为为 l 或或 w 命令指定文件,或者指定正在测试的文件的参数。命令指定文件,或者指定正在测试的文件的参数。 第

32、第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用Debug 命令命令 o 向输出端口发送向输出端口发送 1 个字节的值。个字节的值。 p 执行循环、重复的字符串指令、软件中断或子例程。执行循环、重复的字符串指令、软件中断或子例程。 q 停止停止 Debug 会话。会话。 r 显示或改变一个或多个寄存器。显示或改变一个或多个寄存器。 s 在部分内存中搜索一个或多个字节值的模式。在部分内存中搜索一个或多个字节值的模式。 t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步

33、要执行的指令的解码形式。下一步要执行的指令的解码形式。 u 反汇编字节并显示相应的原语句。反汇编字节并显示相应的原语句。 w 将被测试文件写入磁盘。将被测试文件写入磁盘。 xa 分配扩展内存。分配扩展内存。 xd 释放扩展内存。释放扩展内存。 xm 映射扩展内存页。映射扩展内存页。 xs 显示扩展内存的状态。显示扩展内存的状态。 第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用调试命令调试命令v显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令v运行程序命令运行程序命令v汇编和反汇编命令汇编和反汇编命令v文件的装、写命令文件的装、

34、写命令v退出退出DEBUG命令命令v其他命令其他命令第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用命令参数命令参数v分隔命令参数分隔命令参数 w所有所有 Debug 命令都接受参数,除了命令都接受参数,除了 q 命令命令之外。可以用逗号或空格分隔参数,但是之外。可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分只有在两个十六进制值之间才需要这些分隔符。因此,以下命令等价:隔符。因此,以下命令等价: dcs:100 110 d cs:100 110 d,cs:100,110 第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调

35、试程序调试程序Debug的使用的使用命令参数命令参数v指定有效地址项指定有效地址项 w Debug 命令中的命令中的 address 参数指定内存位置。参数指定内存位置。Address 是一个包含字母段记录的二位名称或一个是一个包含字母段记录的二位名称或一个四位字段地址加上一个偏移量。可以忽略段寄存器四位字段地址加上一个偏移量。可以忽略段寄存器或段地址。或段地址。a,g,l,t,u 和和 w 命令的默认段是命令的默认段是 CS。所有其他命令的默认段是所有其他命令的默认段是 DS。所有数值均为十六进。所有数值均为十六进制格式。制格式。 w 有效地址如下:有效地址如下: CS:0100 04BA:

36、0100 在段名和偏移量之间要有冒号。在段名和偏移量之间要有冒号。 第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用命令参数命令参数v指定有效范围项指定有效范围项 wDebug 命令中的命令中的 range 参数指定了内存的参数指定了内存的范围。可以为范围。可以为 range 选择两种格式:起始选择两种格式:起始地址和结束地址,或者起始地址和长度范地址和结束地址,或者起始地址和长度范围(由围(由 L 表示)。表示)。 w例如,下面的两个语法都可以指定从例如,下面的两个语法都可以指定从 CS:100 开始的开始的 16 字节范围:字节范围: cs:1

37、00 10f cs:100 L 10 显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令1.R命令命令显示单个寄存器的内容并等待显示单个寄存器的内容并等待修改这个寄存器的内容。修改这个寄存器的内容。w R之后输入寄存器名字符。之后输入寄存器名字符。显示所有寄存器和标志位值。显示所有寄存器和标志位值。w 只输入只输入R。OF DF IF SF ZA AF PF CF显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令1.R命令命令显示上述显示上述8个状态标志位的状态并等待重新设个状态标志位的状态并等待重新设置。置。w 输入输入RF。w 按回车不改变标志位状态。按

38、回车不改变标志位状态。w 或输入新的状态符,重新设置标志位状态。或输入新的状态符,重新设置标志位状态。显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令2.D命令命令v显示某个存储区的内容。显示某个存储区的内容。 D,如不指定范围,一次显示如不指定范围,一次显示8行行16个字节个字节D 默认段寄存器为默认段寄存器为DS,当前偏移地址,当前偏移地址 D 地址地址D 0B03:0100D 130;130为偏移地址,默认段寄存器为偏移地址,默认段寄存器DS显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令2.D命令命令v显示某个存储区的内容。显示某个存储区的内容。

39、 D 范围范围-D DS:100-D CS:100-D DS:100 110-D 100 L 10显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令3.E命令命令v显示和修改存储单元的内容。默认段地址为显示和修改存储单元的内容。默认段地址为DS。 E 地址地址 从指定地址开始,修改(或连续修改)存储单元内容。从指定地址开始,修改(或连续修改)存储单元内容。 DEBUG首先显示指定单元内容,如要修改,可输入首先显示指定单元内容,如要修改,可输入新数据新数据 减号键显示上一个单元内容并可修改减号键显示上一个单元内容并可修改 空格键显示下一个单元内容并可修改空格键显示下一个单元内容

40、并可修改 如不修改,可按回车键结束命令。如不修改,可按回车键结束命令。 E 地址地址 数据表数据表从指定的地址开始用数据表给定的数据修改存储单元。从指定的地址开始用数据表给定的数据修改存储单元。 E DS:170 F3 2F 8D。显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令4.F命令命令v在指定的存储器地址范围内置入在指定的存储器地址范围内置入list参数给参数给出的数值或字符代码。默认段地址为出的数值或字符代码。默认段地址为DS。vF 范围范围 数据表数据表w 将数据表写入指定范围的存储单元;数据个数将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少

41、,则重复使用数多,忽略多出的数据,个数少,则重复使用数据表。据表。 F DS:0 L5 01,02,03,04,05 F DS:0 L5 01 02 03 04 05(空格分隔)(空格分隔) F DS:0 L5 FF ;5个字节重复使用个字节重复使用FF显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令5.M命令命令v用指定的存储区的内容传送到另一指令的存储区去。用指定的存储区的内容传送到另一指令的存储区去。默认段地址为默认段地址为DS。vM 范围范围 地址地址w 范围指被传送的存储区的地址范围。范围指被传送的存储区的地址范围。w 地址指传送的目的存储区的开始地址。地址指传送

42、的目的存储区的开始地址。运行程序命令运行程序命令1.G命令命令v执行正在调试的程序。默认段地址为执行正在调试的程序。默认段地址为CS。 G;从;从CS:IP指向的指令开始执行程序,直到程序结束。指向的指令开始执行程序,直到程序结束。 G=地址;从指定地址开始执行程序,直到程序结束。地址;从指定地址开始执行程序,直到程序结束。 G 断点断点1,断点,断点2,断点断点10;从;从CS:IP指向的指令开始指向的指令开始执行程序,直到遇到断点。执行程序,直到遇到断点。G=地址地址 断点断点1,断点,断点2,断点断点10G=100 ;从指定地址开始执行程序。;从指定地址开始执行程序。G=100 105

43、110 120运行程序命令运行程序命令2.T命令命令v执行一条或多条指令,每执行一条指令如同执执行一条或多条指令,每执行一条指令如同执行一次行一次R命令,显示所有寄存器的内容和状态命令,显示所有寄存器的内容和状态标志位的状态。标志位的状态。 T;从当前;从当前IP开始执行一条指令。开始执行一条指令。 T 数值;从当前数值;从当前IP开始执行多条指令。开始执行多条指令。 T =地址;地址; T =地址地址 数值;数值; T T5 / T=100 5 要想填入正确的地址和要跟踪的命令数,应先要想填入正确的地址和要跟踪的命令数,应先使用使用-u命令察看内容命令察看内容运行程序命令运行程序命令3.P命

44、令命令v跟踪执行并跳过子程序跟踪执行并跳过子程序 。 P =地址地址 数值数值;类似;类似T命令,但跳过子程命令,但跳过子程序和中断服务程序序和中断服务程序运行程序命令运行程序命令T命令和命令和P命令的区别命令的区别v单步跟踪命令单步跟踪命令Tv单步执行命令单步执行命令Pv人们常将单步跟踪命令称作人们常将单步跟踪命令称作“单步进入单步进入(step in)”,而将,而将单步执行命令称作单步执行命令称作“单步通过单步通过(step over)”。v对于对于t命令,单步跟踪命令命令,单步跟踪命令t会进入进程,一步步地执行会进入进程,一步步地执行v而单步执行命令而单步执行命令p会按照一般程序执行,而

45、不会进入进会按照一般程序执行,而不会进入进程中程中汇编与反汇编命令汇编与反汇编命令1.A命令命令v直接汇编汇编语言指令存入存储器直接汇编汇编语言指令存入存储器w A 地址地址;从指定的地址开始输入符号指令;如省略;从指定的地址开始输入符号指令;如省略地址,则接着上一个地址,则接着上一个A命令的最后一个单元开始;若命令的最后一个单元开始;若第一次使用第一次使用A命令省略地址,则从当前命令省略地址,则从当前CS:IP开始开始(通常是(通常是CS:100)。)。 在在DEBUG下编写简单程序即使用下编写简单程序即使用A命令。命令。 每条指令后要按回车。每条指令后要按回车。 不输入指令按回车,或按不输

46、入指令按回车,或按Ctrl+C结束汇编。结束汇编。 支持所有支持所有8086符号硬指令,伪指令只支持符号硬指令,伪指令只支持DB、DW,不支持各类符号名。,不支持各类符号名。汇编与反汇编命令汇编与反汇编命令2.U命令命令v对存储器内的指令机器码进行反汇编。对存储器内的指令机器码进行反汇编。 U 地址地址;从指定地址开始反汇编;从指定地址开始反汇编32个字节的机个字节的机器指令;省略地址时器指令;省略地址时,则接着上一个则接着上一个U命令的最后一命令的最后一个单元开始;若第一次使用个单元开始;若第一次使用U命令省略地址,则从当命令省略地址,则从当前前CS:IP开始(通常是开始(通常是CS:100

47、)。)。 U 范围;对指定范围的单元进行反汇编。范围;对指定范围的单元进行反汇编。 U U100 U100L10汇编与反汇编命令汇编与反汇编命令文件的装、写命令文件的装、写命令1.N命令命令v N 文件标示符;指定文件,以便用文件标示符;指定文件,以便用W命命令在磁盘上生成该文件,或者用令在磁盘上生成该文件,或者用L命令命令从磁盘装入该文件。从磁盘装入该文件。wN MY_PRO.COMw写盘:在当前盘当前目录生成指定文件。写盘:在当前盘当前目录生成指定文件。w读盘:在当前盘当前目录读取指定文件。读盘:在当前盘当前目录读取指定文件。w N A: USER MY_PRO.COM文件的装、写命令文件

48、的装、写命令2.L命令命令 L 地址地址;装入;装入N命令指定的文件,默命令指定的文件,默认的内存地址为认的内存地址为CS:100。 N MY_PRO.COM L L 地址地址 驱动器号驱动器号 扇区号扇区号 扇区数;将某扇区数;将某驱动器的若干扇区(最多驱动器的若干扇区(最多80H个)装入个)装入内存;内存; 0=A,1=B,2=C;默认的段;默认的段地址为地址为CS。 L DS:200 2 0 1文件的装、写命令文件的装、写命令3.W命令命令 W 地址地址;将指定地址开始的内存数据写入磁;将指定地址开始的内存数据写入磁盘,生成盘,生成N命令指定的文件;默认的内存地址为命令指定的文件;默认的内存地址为CS:100;写盘的字节数由;写盘的字节数由BX(高位字高位字)和和CX(低低位字位字)决定,可执行程序写盘时,文件扩展名应决定,可执行程序写盘时,文件扩展名应指定指定.COM。 N MY_PRO.COM W W 地址地址 驱动器号驱动器号 扇区号扇区号 扇区数;将内存数据扇区数;将内存数据写入磁盘的若干扇区(最多写入磁盘的若干扇区(最多80H);默认的段地);默认的段地址为址为CS。 W DS:0 2 0 1 注释:写磁盘扇区要慎用注释:写磁盘扇区要慎用其他命令其他命令1.S命令命令2.C命令命令3.H命令命令4.I命令命令5.O命令命令6.Q命令命令

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!