《MASM汇编基础及上机》由会员分享,可在线阅读,更多相关《MASM汇编基础及上机(69页珍藏版)》请在金锄头文库上搜索。
1、微机原理与汇编语言微机原理与汇编语言第第4章章 MASM汇编基础及上机汇编基础及上机 4.6 汇编程序的编写与执行汇编程序的编写与执行 4.7 调试程序调试程序DEBUG的使用的使用 独褂犊硕逾府屁涸壁剩津磁宠驯趟劳机醇虞坟均戴井沮因挎亢督格缕眯纳MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.1 一个汇编语言程序从写出到最终一个汇编语言程序从写出到最终执行的简要过程执行的简要过程 编写编写-编译编译-连接连接-执行执行演示演示诲亿蛀势力膳统兵蓝捡策场响常逢打玲邵绘婶羹豢砷脾幸追忿扣绅邪榆皋MA
2、SM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机assumecodesg XXX segment XXX ends end 4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.2 源程序源程序矗尸僚另启华笺害么呈柠逃摄归纠秋拱脐款魂矩睹舀染浇预靖矾棘娩缔恋MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.2 源程序源程序程序的结构程序的结构v定义一个段定义一个段v实现处理任务实现处理任务v程序结束程序结束v段与段寄存器关联段与段寄存器关联 旱诫驻鼓揪酸勉
3、寅荫稿陨辕四弗寇涯理缩承背有锹想纂谰奔屈诧疾篡斜租MASM汇编基础及上机MASM汇编基础及上机语法错误和逻辑错误语法错误和逻辑错误 语法错误语法错误程序在编译时被编译器发现的错误;程序在编译时被编译器发现的错误;容易发现。容易发现。 assum cs:codesgcodesg segment start:mov ax,0123h mov bx,0456h add ax,bx add ax,ax mov ax,4c00h int 21hcodesg endsend start戮横包衣校亚艺爵磕骚钦纤勿酋壳裤酿油啪兴锣抡摧足写股砒钓蓬圆奎智MASM汇编基础及上机MASM汇编基础及上机语法错误和逻辑
4、错误语法错误和逻辑错误 逻辑错误逻辑错误w程序在编译时不能表现出来的、在运行时程序在编译时不能表现出来的、在运行时发生的错误不容易发现。发生的错误不容易发现。 assume cs:codesgcodesg segment start:mov ax,0123h mov bx,0456h add ax,bx add ax,axcodesg ends mov ax,4c00h int 21hend start森浴属晶撇洒车浆茵膊儿吨听浙寇参苔札妄厨寻衣嫉薪秒接娱广至秽辙锁MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的
5、编写与执行4.6.2 源程序源程序打开打开“记事本记事本”程序,在其中编辑程序,如下图所示:程序,在其中编辑程序,如下图所示:喘筏祭框萎健岔剐遁纲加曲写芭饲撞鸣共伴桩刻翔炼莎畴慕哩芍品釜饥读MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v进入进入DOS方式,进入方式,进入 D:masm 目录,运行目录,运行masm.exe。v如果源程序文件不是以如果源程序文件不是以 asm为扩展名的话,就为扩展名的话,就要输入它的全名。比如要输入它的全名。比如1.txt。v在输入源程序文件名的时候
6、一定要指明它所在在输入源程序文件名的时候一定要指明它所在的路径。如果文件就在当前路径下,只输入文的路径。如果文件就在当前路径下,只输入文件名就可以。件名就可以。诞沫痞门搔葛晤咆球祸逾纹监申契涯皇然绦扦棘誓雨绣誊乃凸了揩恤零焰MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v输入要编译的源文件文件名后,按输入要编译的源文件文件名后,按 Enter键。键。v目标文件(目标文件(*.obj)是我们对一个源程序进行)是我们对一个源程序进行编译要得到的最终结果。编译要得到的最终结果。v编译程序
7、默认要输出的目标文件名为编译程序默认要输出的目标文件名为1.obj,所,所以可以不必再另行指定文件名。以可以不必再另行指定文件名。疙凭父舀焊乳泵囊阴谗颗剩庄淤蒜琴击鼎剐奶问吠枢溃羌币肾绢兑溅竞恐MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v列表文件是编译器将源程序编译为目标列表文件是编译器将源程序编译为目标文件的过程中产生的中间结果。文件的过程中产生的中间结果。v可以不生成这个文件,直接按可以不生成这个文件,直接按 Enter键键即可。即可。漱矛柑宦口儿覆揪万捌失置评糟端次操羞芳
8、协邹耽颓三盯枷湖宰杯乞曝幅MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v编译程序提示输入交叉引用文件的名称。编译程序提示输入交叉引用文件的名称。v这个文件同列表文件一样,是编译器将源程这个文件同列表文件一样,是编译器将源程序编译为目标文件过程中产生的中间结果。序编译为目标文件过程中产生的中间结果。v可以不生成这个文件,直接按可以不生成这个文件,直接按 Enter 键即可。键即可。泥于锯邓斌傈怔券枉虐第功硕丧往破某魔宁韧因聊区狮钠弟雹恤溜原博酞MASM汇编基础及上机MASM汇编基础
9、及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.3 编译编译v对源程序的编译结束,编译器输出的最后两对源程序的编译结束,编译器输出的最后两行告诉我们这个源程序没有警告错误和必须行告诉我们这个源程序没有警告错误和必须要改正的错误。要改正的错误。v一般来说,有两类错误使我们得不到所期望一般来说,有两类错误使我们得不到所期望的目标文件:的目标文件:(1)我们程序中有)我们程序中有“Severe Errors”;(2)找不到所给出的源程序文件。)找不到所给出的源程序文件。肌骆猎慑姬缓恶妈钦怕嚣疚扣柔澄狸独藏脉生稳烬陀藤警畔坡济升卷怔深MAS
10、M汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v在对源程序进行编译得到目标文件后,在对源程序进行编译得到目标文件后,我们需要对目标文件进行连接,从而得我们需要对目标文件进行连接,从而得到可执行文件。到可执行文件。v继续上一节的过程,我们再将继续上一节的过程,我们再将D:masm1.obj连接为连接为D:masm1.exe。市达象监宰悄饶勿裕鉴睁鬼便胀骑办涡嫉留邢洋躯硒魏寡增慑隅患楔诊川MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编
11、程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v进入进入DOS方式,进入方式,进入C:masm目录,运行目录,运行link.exe。v在输入目标文件名的时候,要注意指明它所在输入目标文件名的时候,要注意指明它所在的路径。这里,我们要连接的文件是当前在的路径。这里,我们要连接的文件是当前路径下路径下1.obj,所以此处输入,所以此处输入“1”。齐全惨馈革肠焦勃者攻垣伐戎债虫啤涡傈驾搞歹天娠溃广岛颧端戎奈枪酝MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v输入要连接的目标文件
12、名后,按输入要连接的目标文件名后,按Enter键。键。v可执行文件是我们对一个程序进行连接要得可执行文件是我们对一个程序进行连接要得到的最终结果。到的最终结果。v连接程序默认要输出的可执行文件名为连接程序默认要输出的可执行文件名为 1.EXE ,所以可以不必再另行指定文件名。,所以可以不必再另行指定文件名。v我们直接按我们直接按 Enter 键,使用连接程序设定的键,使用连接程序设定的可执行文件名。可执行文件名。酣活药辖烈眨滥篱恩耘燃泪禁捐垫答锥闹咆懂诊效诞倍舵歼接引授敏停躲MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行
13、汇编程序的编写与执行4.6.4 连接连接v映像文件是连接程序将目标文件连接为可执映像文件是连接程序将目标文件连接为可执行文件过程中产生的中间结果。行文件过程中产生的中间结果。v可以不生成这个文件,直接按可以不生成这个文件,直接按 Enter 键即可。键即可。扩北绎拐伍麻吕拼原乔朗檬居峪椿丽诗胜瞅靠蔫宰畅睦不仲羚稽琴暇占峦MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v连接程序提示输入库文件的名称。连接程序提示输入库文件的名称。v库文件里包含了一些可以调用的子程序,如果我们的程序库文
14、件里包含了一些可以调用的子程序,如果我们的程序中调用了某一个库文件中的子程序,就需要在连接的时候,中调用了某一个库文件中的子程序,就需要在连接的时候,将这个库文件和我们的目标文件连接到一起,生成可执行将这个库文件和我们的目标文件连接到一起,生成可执行文件。文件。v如果没有调用任何子程序,直接按如果没有调用任何子程序,直接按Enter键即可。键即可。皆趁搜触魏愚坯净闭翌碱明嗅料拨康际挂桩试恩询臆拎寡慌儡堆脖掐糙邹MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.4 连接连接v这时我们得到了一个新的文
15、件这时我们得到了一个新的文件 1.exe 。当然,如果连接过。当然,如果连接过程中出现错误,那么我们将得不到这个可执行文件。程中出现错误,那么我们将得不到这个可执行文件。v对目标文件的连接结束,连接程序输出的最后一行告诉我对目标文件的连接结束,连接程序输出的最后一行告诉我们,这个程序有一个警告错误:们,这个程序有一个警告错误:“没有栈段没有栈段” ,这里我,这里我们不理会这个错误。们不理会这个错误。余鲸祟惑岳誓捉脖硅涸牺相轰马沁抡寨罕宦着骨茅诅喷茨谓旧贼余悬就环MASM汇编基础及上机MASM汇编基础及上机连接连接连接的作用有以下几个:连接的作用有以下几个:w当源程序很大时,可以将它分为多个源程
16、当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,文件后,再用连接程序将它们连接到一起,生成一个可执行文件;生成一个可执行文件;w程序中调用了某个库文件中的子程序,需程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;连接到一起,生成一个可执行文件;药令搀芋巷济你宋躲说园秆鼓悔脾辫捶刽句朔皿乓丛颈拙修惜解喻青腔借MASM汇编基础及上机MASM汇编基础及上机连接连接连接的作用有以下几个(续):连接的作用有以下几个(
17、续):w一个源程序编译后,得到了存有机器码的一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这直接用来生成可执行文件,连接程序将这此内容处理为最终的可执行信息。此内容处理为最终的可执行信息。w所以,在只有一个源程序文件,而又不所以,在只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也需要调用某个库中的子程序的情况下,也必须用连接程序对目标文件进行处理,生必须用连接程序对目标文件进行处理,生成可执行文件。成可执行文件。w注意,对于连接的过程,可执行文件是我注意,对于连接的过程,可执行文件是我
18、们要得到的最终结果。们要得到的最终结果。险购渺堤疤蹋舌酷矮榷概抓砸吧耽纱砰驼吉瞬防煽窘泊捧释湿牌瞥菌镶浸MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.5 执行执行v现在,终于将我们的第一个汇编程序加工成了现在,终于将我们的第一个汇编程序加工成了一个可在操作系统下执行的程序文件。一个可在操作系统下执行的程序文件。1.exe的的执行情况:执行情况:v程序到底运行没有?程序到底运行没有?v程序当然运行了,只是从屏幕上不可能看到任程序当然运行了,只是从屏幕上不可能看到任何运行结果。何运行结果。行抿诊亏
19、朗斌芜速码远颈剖咐砖顽啃败酿汛横溺驳赤肾蔫摸汐绍证哨壹愤MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行4.6.5 执行执行v我们的程序没有像显示器输出任何信息。程我们的程序没有像显示器输出任何信息。程序只是做了一些将数据送入寄存器和加法的序只是做了一些将数据送入寄存器和加法的操作,而这些事情,我们不可能从显示屏上操作,而这些事情,我们不可能从显示屏上看出来。看出来。v程序执行完成后,返回,屏幕上再次出现操程序执行完成后,返回,屏幕上再次出现操作系统的提示符。作系统的提示符。v可执行文件中的程序装入内存
20、并运行的原理可执行文件中的程序装入内存并运行的原理惨椰恶喂糯腾蠢驹栓躯号条最与妻训婆墩幸无椎伦郡嫩施蚤说肋悬椿铸梭MASM汇编基础及上机MASM汇编基础及上机可执行文件中的程序装入内存并运行的原理可执行文件中的程序装入内存并运行的原理wDOS是一个单任务操作系统。是一个单任务操作系统。w在在DOS中,可执行文件中的程序中,可执行文件中的程序P2若要若要运行,必须有一个正在运行的程序运行,必须有一个正在运行的程序P1 ,将将 P2从可执行文件中加载入内存,将从可执行文件中加载入内存,将CPU的控制权交给它,的控制权交给它,P2才能得以运行;才能得以运行; P2开始运行后,开始运行后,P1暂停运行
21、。暂停运行。w当当P2运行完毕后,应该将运行完毕后,应该将CPU的控制权交的控制权交还给使它得以运行的程序还给使它得以运行的程序P1。此后,。此后,P1继续运行。继续运行。w1.exe的执行过程的执行过程鞠卞俄桶鉴郑袁柠竟赐挺牧淄惋课恕抛隔祖榴界妈古歪掳遭叶到走梧谗物MASM汇编基础及上机MASM汇编基础及上机可执行文件中的程序装入内存并运行的原理可执行文件中的程序装入内存并运行的原理w1.exe的执行过程:的执行过程:(1)我们在提示符)我们在提示符“D:masm”后面输后面输入可执行文件的名字入可执行文件的名字“1”,按,按Enter键。键。(2)1.exe中的程序运行;中的程序运行; 问
22、题问题1(3)运行结束,返回,再次显示提示符)运行结束,返回,再次显示提示符“D:masm”。 问题问题2果美咱自泄叠辱池桅痉讫稻瘤曰遍仙舟幕忧物防淤朝痰券浴庞汗胁印题皮MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.6 汇编程序的编写与执行汇编程序的编写与执行汇编程序从写出到执行的过程:汇编程序从写出到执行的过程:1.编写源程序编写源程序1.txt2.编译编译masm 1.txt 1.obj3.连接连接link 1.obj 1.exe4.加载到内存并运行加载到内存并运行满酿唬坛蛔罗芽焰休真扯割始迅祸责友司侩少赦余卖麻鸟蒂枢硕外丁匪阅MASM汇编
23、基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用w为了观察程序的运行过程为了观察程序的运行过程 ,我们可以使用,我们可以使用Debug。wDebug 可以将程序加载入内存,设置可以将程序加载入内存,设置CS:IP指向程序的入口,但指向程序的入口,但Debug并不放并不放弃对弃对CPU 的控制,这样,我们就可以使用的控制,这样,我们就可以使用Debug 的相关命令来单步执行程序的相关命令来单步执行程序 ,查看,查看每条指令的执行结果。每条指令的执行结果。授慰梢剑拙磁揭娟薛褪慰返烟沏容勘涎榜串谍墨壤萍佣脚懂烫壤猎冒州懒M
24、ASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用w接下来可以用接下来可以用R命令看一下各个寄存命令看一下各个寄存器的设置情况:器的设置情况:w可以看到,可以看到,Debug将程序从可执行文将程序从可执行文件加载入内存后,件加载入内存后,CX寄存器中存放的寄存器中存放的是程序的长度。是程序的长度。1.exe 中程序的机器中程序的机器码共有码共有15个字节。个字节。争穷男梳蚤赃甜稍橇径赂驴葬林数绑烁儡帅填拖郭霹茸赠勤撼俞潞灶波傍MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基
25、础及上机4.7 调试程序调试程序Debug的使用的使用w用用U命令查看一下其他指令:命令查看一下其他指令:庭滞立研仍命耙消柴叔壳认句渡鄂无戮废之掉敞揍条竖铭蔚澜爬镣村胰戒MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用w用用T命令单步执行程序中的每一条指令,命令单步执行程序中的每一条指令,并观察每条指令的执行结果。并观察每条指令的执行结果。第盲嗽奄吗耸汲祷箍偏意瘴颈燕哭两唇巢饵态撇寄彝缀烯翟饰际恕市睡胳MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试
26、程序调试程序Debug的使用的使用w到了到了 int 21,要用,要用P命令执行:命令执行:wint 21 执行后,显示执行后,显示“Program terminated normally”,返回到,返回到Debug中。中。w表示程序正常结束。表示程序正常结束。橡你技昨屉山吏咸泊沾狄贡向残鼻边秃镇葵瘸诛嫩识栽塑瘦庐枪壤账刮医MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用w最后,使用最后,使用Q命令退出命令退出Debug,将返回到,将返回到command中,因为中,因为Debug是由是由command加载
27、运行的。加载运行的。w如果需要退出如果需要退出DOS,请输入,请输入exit并回车。并回车。吸飘著博晴菇壁脑昭星团坟诉害卑治殖裔书晴谱蹭院过涯你侍颇宵良盛踩MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机w需要注意的是,在需要注意的是,在 DOS 中运行程序时,中运行程序时,是是command将程序加载入内存;将程序加载入内存;w所以程序运行结束后返回到所以程序运行结束后返回到command中,而在这里是中,而在这里是debug 将程序加载入内将程序加载入内存,所以程序运行结束后要返回到存,所以程序运行结束后要返回到Debug中。中。w我们在我们在
28、DOS中用中用 “Debug 1.exe” 运行运行Debug对对1.exe进行跟踪时,程序加载的进行跟踪时,程序加载的顺序是:顺序是:command加载加载Debug,Debug加载加载1.exe。w返回的顺序是:从返回的顺序是:从1.exe中的程序返回到中的程序返回到Debug,从,从Debug返回到返回到command。乡筋雾颖渊野酵巳篮皋使行上脏技灿能寨涨耿美县惹本唬移锨我诊饭缘衍MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用启动启动Debugv启动启动 Debug,它是可用于测试和调试,它是可
29、用于测试和调试 MS-DOS 可执行文件的程序。可执行文件的程序。 wDebug drive:path filename parameters drive:path filename 指定要测试的可执行文件的位置和名称。指定要测试的可执行文件的位置和名称。 parameters 指定要测试的可执行文件所需要的任何指定要测试的可执行文件所需要的任何命令行信息。命令行信息。向虽譬辞助愁拌磺苔拇猛联姥例拇缨州卯苟绅蚌窗愿复数恒同司磷护爽蚤MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用Debug 命令命令 ?
30、显示显示 Debug 命令列表。命令列表。 a 汇编汇编 8086/8087/8088 记忆码。记忆码。 c 比较内存的两个部分。比较内存的两个部分。 d 显示部分内存的内容。显示部分内存的内容。 e 从指定地址开始,将数据输入到内存。从指定地址开始,将数据输入到内存。 f 使用指定值填充一段内存。使用指定值填充一段内存。 g 运行在内存中的可执行文件。运行在内存中的可执行文件。 h 执行十六进制运算。执行十六进制运算。 i 显示来自特定端口的显示来自特定端口的 1 字节值。字节值。 l 将文件或磁盘扇区内容加载到内存。将文件或磁盘扇区内容加载到内存。 m 复制内存块中的内容复制内存块中的内容
31、n 为为 l 或或 w 命令指定文件,或者指定正在测试的文件的参数。命令指定文件,或者指定正在测试的文件的参数。 笔睫碗褐刚探戊挡及甥减宅茧谁巫纤渣凋板涟徊窒啦外窟碗酬喘牡靳超熊MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用Debug 命令命令 o 向输出端口发送向输出端口发送 1 个字节的值。个字节的值。 p 执行循环、重复的字符串指令、软件中断或子例程。执行循环、重复的字符串指令、软件中断或子例程。 q 停止停止 Debug 会话。会话。 r 显示或改变一个或多个寄存器。显示或改变一个或多个寄存器。
32、 s 在部分内存中搜索一个或多个字节值的模式。在部分内存中搜索一个或多个字节值的模式。 t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步要执行的指令的解码形式。下一步要执行的指令的解码形式。 u 反汇编字节并显示相应的原语句。反汇编字节并显示相应的原语句。 w 将被测试文件写入磁盘。将被测试文件写入磁盘。 xa 分配扩展内存。分配扩展内存。 xd 释放扩展内存。释放扩展内存。 xm 映射扩展内存页。映射扩展内存页。 xs 显示扩展内存的状态。显示扩展内存的状态。 并颐寒肺类缸竟钒汲家直金直梯召扼奥傣里找祥互
33、元直垃臀心恤省廓劣祈MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用调试命令调试命令v显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令v运行程序命令运行程序命令v汇编和反汇编命令汇编和反汇编命令v文件的装、写命令文件的装、写命令v退出退出DEBUG命令命令v其他命令其他命令喂快屎坟掏虱账汰薄酮选粳尧娟啃舶纠彤销爆茂槽待弗么冤裤翔院蛰优傅MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用命令参数命令参
34、数v分隔命令参数分隔命令参数 w所有所有 Debug 命令都接受参数,除了命令都接受参数,除了 q 命令命令之外。可以用逗号或空格分隔参数,但是只之外。可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符。有在两个十六进制值之间才需要这些分隔符。因此,以下命令等价:因此,以下命令等价: dcs:100 110 d cs:100 110 d,cs:100,110 琅饥躇春仁裴菊若氛蛹聂绍综寞嫉狼盅治尔凤煮斩折铂块辑瑚恍吾笆咙峙MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用命令参数命令参数
35、v指定有效地址项指定有效地址项 wDebug 命令中的命令中的 address 参数指定内存位置。参数指定内存位置。Address 是一个包含字母段记录的二位名称或一个是一个包含字母段记录的二位名称或一个四位字段地址加上一个偏移量。可以忽略段寄存器四位字段地址加上一个偏移量。可以忽略段寄存器或段地址。或段地址。a,g,l,t,u 和和 w 命令的默认段是命令的默认段是 CS。所有其他命令的默认段是所有其他命令的默认段是 DS。所有数值均为十六进。所有数值均为十六进制格式。制格式。 w有效地址如下:有效地址如下: CS:0100 04BA:0100 在段名和偏移量之间要有冒号。在段名和偏移量之间
36、要有冒号。 目掐逗翁弘筒蛹则敢轨亦曹糯蛊溜彻肝刨披艾竞涪受芭骋遇昏诊锅满泵鄙MASM汇编基础及上机MASM汇编基础及上机第第4章章 MASM汇编基础及上机汇编基础及上机4.7 调试程序调试程序Debug的使用的使用命令参数命令参数v指定有效范围项指定有效范围项 wDebug 命令中的命令中的 range 参数指定了内存的参数指定了内存的范围。可以为范围。可以为 range 选择两种格式:起始选择两种格式:起始地址和结束地址,或者起始地址和长度范围地址和结束地址,或者起始地址和长度范围(由(由 L 表示)。表示)。 w例如,下面的两个语法都可以指定从例如,下面的两个语法都可以指定从 CS:100
37、 开始的开始的 16 字节范围:字节范围: cs:100 10f cs:100 L 10 烫啄慰礁默霖娄遵佛荐毡炙赔举魔楚闺疾售设份辣悸坎衷尾爆靡靡谣宙蜕MASM汇编基础及上机MASM汇编基础及上机显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令1.R命令命令显示单个寄存器的内容并等待显示单个寄存器的内容并等待修改这个寄存器的内容。修改这个寄存器的内容。wR之后输入寄存器名字符。之后输入寄存器名字符。显示所有寄存器和标志位值。显示所有寄存器和标志位值。w只输入只输入R。OF DF IF SF ZA AF PF CF艾舔黔投喀杰涨四桥斡约顶柑屯甄例哉割源藕报未沁屏宗靴干洛粥森
38、抗卉MASM汇编基础及上机MASM汇编基础及上机显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令1.R命令命令显示上述显示上述8个状态标志位的状态并等待重新设个状态标志位的状态并等待重新设置。置。w输入输入RF。w按回车不改变标志位状态。按回车不改变标志位状态。w或输入新的状态符,重新设置标志位状态。或输入新的状态符,重新设置标志位状态。佬呜套姜舟柔斟膀锌槐三线劈寡酌釜振纲岗谨异磋椽驯龚炎矗惹酞茬绢匙MASM汇编基础及上机MASM汇编基础及上机显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令2.D命令命令v显示某个存储区的内容。显示某个存储区的内容。 D
39、,如不指定范围,一次显示如不指定范围,一次显示8行行16个字节个字节D 默认段寄存器为默认段寄存器为DS,当前偏移地址,当前偏移地址 D 地址地址D 0B03:0100D 130;130为偏移地址,默认段寄存器为偏移地址,默认段寄存器DS柿膛夫门椅蔑霹略优媒勇挝诚讯魄议檄聘毡淡短锋哲罚俯耿淆图嵌尖案咽MASM汇编基础及上机MASM汇编基础及上机显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令2.D命令命令v显示某个存储区的内容。显示某个存储区的内容。 D 范围范围-D DS:100-D CS:100-D DS:100 110-D 100 L 10蠕逼看儒沽瞪叮攀活疤否阻抗输
40、宜戴社档庆散眯问呀翟笋莱好虹头碍鹏译MASM汇编基础及上机MASM汇编基础及上机显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令3.E命令命令v显示和修改存储单元的内容。默认段地址为显示和修改存储单元的内容。默认段地址为DS。 E 地址地址从指定地址开始,修改(或连续修改)存储单元内容。从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入首先显示指定单元内容,如要修改,可输入新数据新数据减号键显示上一个单元内容并可修改减号键显示上一个单元内容并可修改空格键显示下一个单元内容并可修改空格键显示下一个单元内容并可修改如不修改,可按回车
41、键结束命令。如不修改,可按回车键结束命令。 E 地址地址 数据表数据表从指定的地址开始用数据表给定的数据修改存储单元。从指定的地址开始用数据表给定的数据修改存储单元。 E DS:170 F3 2F 8D。沟星涌蚁俘诌吃蜘惮薄摈使媚昧闲泌升港缅事蚌昂蕾时祸叭荫途圃砸蜒提MASM汇编基础及上机MASM汇编基础及上机显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令4.F命令命令v在指定的存储器地址范围内置入在指定的存储器地址范围内置入list参数给参数给出的数值或字符代码。默认段地址为出的数值或字符代码。默认段地址为DS。vF 范围范围 数据表数据表w将数据表写入指定范围的存储单
42、元;数据个数多,将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。忽略多出的数据,个数少,则重复使用数据表。F DS:0 L5 01,02,03,04,05F DS:0 L5 01 02 03 04 05(空格分隔)(空格分隔)F DS:0 L5 FF ;5个字节重复使用个字节重复使用FF寐蔼嚼瞧锣赚云音叹搀莽坞刽铲鞋南咐违侵样稼毡役腊摔醒令飞榷宜恨橇MASM汇编基础及上机MASM汇编基础及上机显示和修改寄存器或存储单元有关命令显示和修改寄存器或存储单元有关命令5.M命令命令v用指定的存储区的内容传送到另一指令的存储区去。用指定的存储区的内容传送到另一指令的
43、存储区去。默认段地址为默认段地址为DS。vM 范围范围 地址地址w范围指被传送的存储区的地址范围。范围指被传送的存储区的地址范围。w地址指传送的目的存储区的开始地址。地址指传送的目的存储区的开始地址。缎灾褥籍矛启醋遮脉龟肌迸盗亮四蔬摆甭甜捧提笨航饥几琢理碑乱粱钧莲MASM汇编基础及上机MASM汇编基础及上机运行程序命令运行程序命令1.G命令命令v执行正在调试的程序。默认段地址为执行正在调试的程序。默认段地址为CS。 G;从;从CS:IP指向的指令开始执行程序,直到程序结束。指向的指令开始执行程序,直到程序结束。 G=地址;从指定地址开始执行程序,直到程序结束。地址;从指定地址开始执行程序,直到
44、程序结束。 G 断点断点1,断点,断点2,断点断点10;从;从CS:IP指向的指令开始指向的指令开始执行程序,直到遇到断点。执行程序,直到遇到断点。G=地址地址 断点断点1,断点,断点2,断点断点10G=100 ;从指定地址开始执行程序。;从指定地址开始执行程序。G=100 105 110 120刘已谱攒韭槽揍叼鄙笔拷捍启颖拦盆棍勇岭洛铰抓吻舵孔锅轧坍蛇者随斧MASM汇编基础及上机MASM汇编基础及上机运行程序命令运行程序命令2.T命令命令v执行一条或多条指令,每执行一条指令如同执执行一条或多条指令,每执行一条指令如同执行一次行一次R命令,显示所有寄存器的内容和状态命令,显示所有寄存器的内容和
45、状态标志位的状态。标志位的状态。 T;从当前;从当前IP开始执行一条指令。开始执行一条指令。 T 数值;从当前数值;从当前IP开始执行多条指令。开始执行多条指令。 T =地址;地址; T =地址地址 数值;数值; T T5 / T=100 5要想填入正确的地址和要跟踪的命令数,应先使要想填入正确的地址和要跟踪的命令数,应先使用用-u命令察看内容命令察看内容屑喀验婪志触嫉涟摊巷摆逊告烷异必刁固鲍盂丁仲舆讶戈找置创廉勋陛刊MASM汇编基础及上机MASM汇编基础及上机运行程序命令运行程序命令3.P命令命令v跟踪执行并跳过子程序跟踪执行并跳过子程序 。 P =地址地址 数值数值;类似;类似T命令,但跳
46、过子程命令,但跳过子程序和中断服务程序序和中断服务程序貉陨坐第喊恕煞驹越僻已砷希绑宏蒲软侥纹炼衫弘霜拼辖锋尘艰迎墅指酵MASM汇编基础及上机MASM汇编基础及上机运行程序命令运行程序命令T命令和命令和P命令的区别命令的区别v单步跟踪命令单步跟踪命令Tv单步执行命令单步执行命令Pv人们常将单步跟踪命令称作人们常将单步跟踪命令称作“单步进入单步进入(step in)”,而将,而将单步执行命令称作单步执行命令称作“单步通过单步通过(step over)”。v对于对于t命令,单步跟踪命令命令,单步跟踪命令t会进入进程,一步步地执行会进入进程,一步步地执行v而单步执行命令而单步执行命令p会按照一般程序执
47、行,而不会进入进程会按照一般程序执行,而不会进入进程中中钳款札涎依姥桂赤领滁穷两闹蜜屯浩诅酚嚏检尼溢与膜颤寞睹娱台祭茂闻MASM汇编基础及上机MASM汇编基础及上机汇编与反汇编命令汇编与反汇编命令1.A命令命令v直接汇编汇编语言指令存入存储器直接汇编汇编语言指令存入存储器wA 地址地址;从指定的地址开始输入符号指令;如省略;从指定的地址开始输入符号指令;如省略地址,则接着上一个地址,则接着上一个A命令的最后一个单元开始;若命令的最后一个单元开始;若第一次使用第一次使用A命令省略地址,则从当前命令省略地址,则从当前CS:IP开始开始(通常是(通常是CS:100)。)。 在在DEBUG下编写简单程
48、序即使用下编写简单程序即使用A命令。命令。 每条指令后要按回车。每条指令后要按回车。 不输入指令按回车,或按不输入指令按回车,或按Ctrl+C结束汇编。结束汇编。 支持所有支持所有8086符号硬指令,伪指令只支持符号硬指令,伪指令只支持DB、DW,不支持各类符号名。,不支持各类符号名。玻乃捎肘募脉轴冷蔡崎肢管陨熊聋悸酝蓑沪垦绊沈渣肖寿唬渠龙萧诺汤涸MASM汇编基础及上机MASM汇编基础及上机汇编与反汇编命令汇编与反汇编命令2.U命令命令v对存储器内的指令机器码进行反汇编。对存储器内的指令机器码进行反汇编。 U 地址地址;从指定地址开始反汇编;从指定地址开始反汇编32个字节的机个字节的机器指令;
49、省略地址时器指令;省略地址时,则接着上一个则接着上一个U命令的最后一命令的最后一个单元开始;若第一次使用个单元开始;若第一次使用U命令省略地址,则从当命令省略地址,则从当前前CS:IP开始(通常是开始(通常是CS:100)。)。 U 范围;对指定范围的单元进行反汇编。范围;对指定范围的单元进行反汇编。 U U100 U100L10蜘姿籽痢播委旅跳乳诛思西叉撑陌相篇宇拙鲍逗钟购们囤鳃救亦姬粮陇闽MASM汇编基础及上机MASM汇编基础及上机汇编与反汇编命令汇编与反汇编命令垦通娜沙茁检尧剖单瑚戚昨轨蝇谱皮淘矩剧暑淋清晚陪炮冉票扮念雁乓扇MASM汇编基础及上机MASM汇编基础及上机文件的装、写命令文件
50、的装、写命令1.N命令命令v N 文件标示符;指定文件,以便用文件标示符;指定文件,以便用W命命令在磁盘上生成该文件,或者用令在磁盘上生成该文件,或者用L命令从命令从磁盘装入该文件。磁盘装入该文件。wN MY_PRO.COMw写盘:在当前盘当前目录生成指定文件。写盘:在当前盘当前目录生成指定文件。w读盘:在当前盘当前目录读取指定文件。读盘:在当前盘当前目录读取指定文件。w N A: USER MY_PRO.COM憨敲迈栈婉嗜椒岁哼铬起籍沟啮造涩违画爽蘸世赶蜕建枯阻匈狡鲜锤郡诀MASM汇编基础及上机MASM汇编基础及上机文件的装、写命令文件的装、写命令2.L命令命令 L 地址地址;装入;装入N命
51、令指定的文件,默命令指定的文件,默认的内存地址为认的内存地址为CS:100。 N MY_PRO.COM L L 地址地址 驱动器号驱动器号 扇区号扇区号 扇区数;将某扇区数;将某驱动器的若干扇区(最多驱动器的若干扇区(最多80H个)装入个)装入内存;内存; 0=A,1=B,2=C;默认的段;默认的段地址为地址为CS。 L DS:200 2 0 1冈始照抄往苟软理尤殴酗及唆痉搬盂纸怀悉殿岂瞅粳消苯军莫茨刮圈否丹MASM汇编基础及上机MASM汇编基础及上机文件的装、写命令文件的装、写命令3.W命令命令 W 地址地址;将指定地址开始的内存数据写入磁;将指定地址开始的内存数据写入磁盘,生成盘,生成N命
52、令指定的文件;默认的内存地址为命令指定的文件;默认的内存地址为CS:100;写盘的字节数由;写盘的字节数由BX(高位字高位字)和和CX(低低位字位字)决定,可执行程序写盘时,文件扩展名应决定,可执行程序写盘时,文件扩展名应指定指定.COM。 N MY_PRO.COM W W 地址地址 驱动器号驱动器号 扇区号扇区号 扇区数;将内存数据扇区数;将内存数据写入磁盘的若干扇区(最多写入磁盘的若干扇区(最多80H);默认的段地);默认的段地址为址为CS。 W DS:0 2 0 1 注释:写磁盘扇区要慎用注释:写磁盘扇区要慎用糙嚎糯别烩铁紊现雌糕荐瘩扶纸哩赦胎需宜溜灰隧刊褥耍蛛噬摊闷帝哄莱MASM汇编基础及上机MASM汇编基础及上机其他命令其他命令1.S命令命令2.C命令命令3.H命令命令4.I命令命令5.O命令命令6.Q命令命令并逛嗓剔茁漓附拢集绕碉奔睫禾检窃聪湍怎忿冀谢镑粘斋吉础扯柱奎胃桨MASM汇编基础及上机MASM汇编基础及上机