汇编语言源程序的编辑与调试过程_第1页
汇编语言源程序的编辑与调试过程_第2页
汇编语言源程序的编辑与调试过程_第3页
汇编语言源程序的编辑与调试过程_第4页
汇编语言源程序的编辑与调试过程_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言源程序的编辑与调试过程1怎样在TD环境下载入被调试稈序?在TD环境下如何编辑汇编指令?在TD环境下如何杳看/修改数据段的数据?4•在TD环境下如何修改寄存器内容?在TD环境下修改某个标志位内容,怎样操作?指定稈序的起始执行地址怎样操作?在TD环境下怎样单步跟踪稈序的执行?8•在TD环境中,若只执行稈序的某一部分指令,怎样处理?被调试稈序的显示输出看不见怎么办?10•用MASM编译时产牛警告错误会影响结果吗?在WIN2000和WINDOWSXP环境中可以使用命令行方式的EDIT编辑器和调试稈序DEBUG吗?为什么点击该稈序时会出现:IncorrectDOSversion的错误信息?12•若使用DEBUG调试运行稈序,如何装入稈序?在汇编语言源稈序中怎样加入中文注释?用记事本工具编辑源稈序,主名为123_ABCDEF.ASM,为什么编译稈序MASM报告找不到该文件?15•用记事本工具编辑源稈序,取名为123.ASM,为什么编译稈序MASM报告找不到该文件?16•已在稈序中设有如下定义:STACKSEGMENT/DR200DUP(0)/STACKENDS/为什么LINK仍然警告:nostacksegment?使用DERUG调试稈序,如何设置断点?用TD调试一个显示字符串的稈序,当单步运行至:/MOVAL.09/INT21H/语句后,稈序似乎变得冗长难耐,是什么原因?怎样在TD环境下载入被调试程序?答:方法1:转到TD.EXE所在目录,在DOS提示符下键入以下命令:C:\ASM>TD/进入TD后,按Alt-F键打开File菜单,选择Open,在文件对话框中输入要调试的程序名,按回车。方法2:转到TD.EXE所在目录,在DOS提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):C:\ASM>TDHELLO.EXE/方法3在Windows操作系统中,打开TD.EXE所在目录,把要调试的程序图标拖放到TD的图标上。[返回]在TD环境下如何输入编辑汇编指令?答(1)用Tab键选择代码区为当前区域;(2)用方向键把光标移到期望的地址处,如果是输入一个新的程序段,建议把光标移到CS:0100H处;(3)打开指令编辑窗口,有两种方法:一是在光标处直接键入汇编指令,在输入汇编指令的同时屏幕上就会自动弹出指令的临时编辑窗口。二是用Alt-F10键激活代码区局部菜单,选择其中的汇编命令,屏幕上也会自动弹出指令的临时编辑窗口。(4)在临时编辑窗口中输入/编辑指令,每输入完一条指令,按回车,输入的指令即可出现在光标处(替换掉原来的指令),同时光标自动下移一行,以便输入下一条指令。[返回]在TD环境下如何杳看/修改数据段的数据?答:(1)用Tab键选择数据区为当前区域;(2)使用局部菜单中的“Goto”命令并结合使用方向键把光标移到期望的地址单元处(注意数据区的光标是一个下划线),数据区就从该地址处显示内存单元的内容。3)若要修改该地址处的内容,则需打开数据编辑窗口。有两种方法:一是在光标处直接键输入数据,在输入数据的同时屏幕上就会自动弹出数据编辑窗口。二是用Alt-F10键激活数据区局部菜单,选择其中的“Change”命令,屏幕上也会弹出数据编辑窗口。(4)在数据编辑窗口中输入所需的数据,输入完后,按回车,输入的数据就会替代光标处的原始数据。「返冋]4.在TD环境下如何修改寄存器内容?答:(1)用Tab键选择寄存器区为当前区域;用方向键把光标移到要修改的寄存器上;打开编辑输入窗口。有两种方法:一是在光标处直接键入所需的值,在键入的同时屏幕上就会自动弹出编辑输入窗口。二是用Alt-F10键激活寄存器区局部菜单,选择其中的“Change”命令,屏幕上也会弹出编辑输入窗口。在编辑输入框中键入所需的值,然后冋车,这个新的值就会取代原来该寄存器的内容。「返冋]5.在TD环境下修改某个标志位内容,怎样操作?答:(1)用Tab键选择标志区为当前区域;用方向键把光标移到要修改的标志位上;按冋车键或空格键即可使标志位的值在0、1之间变化。「返冋]6.指定程序的起始执行地址怎样操作?答:方法一:用Tab键选择代码区为当前区域;用Alt-F10键激活代码区局部菜单,选择局部菜单中的“NewCS:IP”命令。方法二:用Tab键选择寄存器区为当前区域;用方向键把光标移到CS寄存器上,输入程序起始地址的段地址。用方向键把光标移到IP寄存器上,输入程序起始地址的偏移量。「返冋]7. 在TD环境下怎样单步跟踪程序的执行?答:(1)用上述第6条中的方法首先指定程序的起始执行地址;(2)按F7或F8键,每次将只执行一条指令。注:若当前执行的指令是CALL指令,则F7将跟踪进入被调用的子程序,而F8则把CALL指令及其调用的子程序当作一条完整的指令,要执行完子程序才停在CALL指令的下一条指令上。「返冋]在TD环境中,若只执行程序的某一部分指令,怎样处理?答:方法一:用设置断点的方法。用上述第6条中的方法首先指定程序的起始执行地址;用方向键把光标移到要执行的程序段的最后一条指令的下一条指令的起始处(注意,不能移到最后一条指令上,否则最后一条指令将不会被执行),按F2设置断点。也可按Alt-F2键,然后在弹出的输入窗口中输入断点地址。按F9键执行,程序将会停在所设置的断点处。方法二:用“运行程序到光标处”的方法。用上述第6条中的方法首先指定程序的起始执行地址;用方向键把光标移到要执行的程序段的最后一条指令的下一条指令上(注意,同方法一)。按F4键执行程序,程序将会执行到光标处停下。方法三:用“执行到指定位置”的方法。用上述第6条中的方法首先指定程序的起始执行地址;按Alt-F9,在弹出的输入窗口中输入要停止的地址(即要在哪条指令起始处暂停,就输入哪条指令的地址),按回车,程序将会执行到指定位置处暂停。[返冋]9.被调试程序的显示输出看不见怎么办?答:在TD环境下按Alt-F5键。[返冋]用MASM编译时产生警告错误会影响结果吗?答:会。警告错误是指仍然生成目标代码,并非是指目标代码是正确的。[返冋]在WIN2000和WINDOWSXP环境中可以使用命令行方式的EDIT编辑器和调试程序DEBUG吗?为什么点击该程序时会出现:IncorrectDOSversion的错误信息?答:EDIT和DEBUG属于系统命令程序文件,运行前要核对版本号,WIN98/2000/XP有各自配套的系统命令文件,使用上述两个软件时必须注意版本匹配。WIN98的命令文件放置在WINDOWS(或WIN98)文件夹下的COMMAND子文件夹中;WIN2000/XP的系统命令文件路径一般为:WINDOWS\SYSTEM32或WINNT\SYSTEM32。「返冋]若使用DEBUG调试运行程序,如何装入程序?答:在命令行界面输入:DEBUGABX.EXE或双击DEBUG图标,之后在DEBUG窗口中输入:nABC.EXE/L100两条命令;运行程序即被载入。「返冋]在汇编语言源程序中怎样加入中文注释?答:用记事本或C++编辑器编辑源程序。但须注意中英文切换,源程序中必须使用英文标点符号。[返冋]用记事本工具编辑源程序,主名为123_ABCDEF.ASM,为什么编译程序MASM报告找不到该文件?答:MASM遵循MS-DOS的命名原则,即文件主名最长为8个字符,上述文件主名超过了规定。[返冋]用记事本工具编辑源程序,取名为123.ASM,为什么编译程序MASM报告找不到该文件?答:出现此种情况,往往123.ASM并非文件名的全部,其最后的扩展名仍是.TXT,解决的办法是:点击“我的电脑”或“资源管理器”在“查看”或“工具”菜单中选择“文件夹选项”,选择“查看”选项卡,将其中的“隐藏已知文件类型的扩展名”选项取消,可显示全部文件名,再为文件重新命名。[返冋]已在程序中设有如下定义:STACKSEGMENT/DB200DUP(0)/STACKENDS/为什么LINK仍然警告:nostacksegment?答:将段定义修改为:STACKSEGMENTSTACK;后面的STACK项是组合类型,即不再出现警告信息。[返冋]使用DEBUG调试程序,如何设置断点?答:例如,在DEBUG命令窗口中输入:G=100,0150;表示从代码段偏移地址100H执行到150H处中断,届时可通过各寄存器及存储器察看程序的中间结果。[返冋]用TD调试一个显示字符串的程序,当单步运行至:/MOVAL,09/INT21H/语句后,程序似乎变得冗长难耐,是什么原因?答:在INT21H处单步运行,即进入了DOS系统调用中断程序服务程序,其中包含了从0~62H个功能子程序,用参数AH区分。9号功能只是其中一个分支,内中还要有输入输出底层处理。运行至此,应该将TD窗口的光标置于INT下一条语句前,按F4键,即以光标所在处为断点,就可自动执行完该调用程序。[返冋]实验一熟悉PC机的使用和调试汇编程序的方法一.实验目的:掌握汇编程序由编辑、编译、链接到调试的全过程。

2.通过汇编调试工具加深对机器指令执行过程的了解。实验要求:了解PC机的系统类型和基本配置,熟悉PC机DOS下的基本操作命令。掌握使用PE2(或使用SIDEKICH(SK),edit)等编辑器对汇编语言源程序(扩展名.ASM)的编辑操作。学会用宏汇编程序MASM(或TASM)对汇编语言源程序进行汇编和使用连接程序LINK(或TLINK)对.OBJ文件链接生成.EXE文件。学会用汇编调试工具软件TD(或DEBUG)对.EXE文件进行调试及执行程序的方法。利用TD(或DEBUG)加深对机器指令的了解。了解汇编帮助软件NG的使用方法。实验仪器:PC机实验步骤:1.开机:开机后有两种状态,即进入DOS操作系统或WINDOWS操作系统,下面分别介绍进入后实验步骤:DOS操作系统:打开机器上的开关,这时屏幕上显示〃〉〃提示符即进入DOS工作状态。要求:每个同学使用自己的学号或其它有特征的字符串建立自己的子目录,建立方法见〈〈DOS的基本操作命令〉〉。开机后,若出现系统崩溃(称〃死机〃)现象,一般使用热启动(CTRL-ALT-DEL键)或复位键重新启动。WINDOWS操作系统开机后进入WINDOWS环境,选择MS-DOS方式的图标,连击鼠标的左键,会进入DOS环境,一般地进入的工作目录是D:\USER,(如果工作目录不是D:\USER,可以通过对MS-DOS方式的属性修改完成,具体方法是,在WINDOWS环境下,光标移至MS-DOS方式图标,击右键,会弹出一菜单,选择属性栏,下图所示:MS-DOS方式属性 常规聞丨字体丨肉存I常规聞丨字体丨肉存I需罰IMs-bos肓式类型:指向MS-DOS程序飾锲捷肓式位置: C:\WINDOWS\Desktop大小:967字节(967字节〕,占用£096字节MS-DOS名称:MS-DOS^l.FIF创建时间:1999年U月13日.21:56>28修改时间:20UU年1月15日11:.27:20访间时间:20.00年4月12日属性:厂口珪魚”r隐藏①)◎存档©确定 取消然后选择程序,会显示如下窗口:注意:将工作目录修改为D:\USERNG(汇编帮助软件)和SK(编辑软件)的启动。NG的启动:在DOS提示符下键入NG,将NG驻留到内存,用户可以随时调出(具体使用方法见〈〈NG的使用〉〉。SK的启动(若使用SK编辑器):在DOS提示符下键入SK,将SK驻留到内存,用户可随时调出(具体使用方法见〈〈SK的使用〉〉),该软件适合较短程序的编辑和调试。编辑、编译、链接和调试汇编语言程序过程。A建立汇编语言程序使用PE2建立汇编语言程序在DOS提示符下使用PE2编辑器输入用户汇编语言程序(扩展名为.ASM)。〉PE2文件名.ASM(回车)使用SK建立汇编语言程序使用SK2热键启动SK编辑命令见《PE2的使用方法》和《SK的使用方法》。使用EDIT建立汇编程序>edit文件名.asm(回车)B汇编程序生成目标程序经过编辑命令建立的汇编语言源程序使用汇编程序编译成目标程序一使用MASM宏汇编进行编译〉MASM文件名在汇编程序调入后,先显示版本号,然后出现第一行提示,Objectfilename[源文件名.OBJ]:;默认该文件名回车。SourceListing[NUL.LST]:源文件名或其他;输入文件名建立可打印文件。CrossReference[NUL.CRF]:源文件名或其他;回车。WarningErrorssevereErrors如果汇编过程中发现源程序有错误,由以上两种错误类型分别列出。此时可分析错误原因,返回编辑程序修改源程序。汇编程序出错信息见《汇编程序出错信息表》,注意出错的类型及出错的源文件对应行。若不需要产生.LST和.CRF文件,可在>下加";">MASM文件名;二使用TASM进行编译例如:编译A.ASM文件。>TASMA<Enter>TurboAssemblerVersion2.5Copyright(c)1988,1991BorlandInternationalAssemblingfile:a.ASMErrormessages:NoneWarningmessages:NonePasses:1Remainingmemory:162k可按要求填加必要的选择。例如若需要在TD中跟踪源文件调试,可使用/zi选择(应注意选择项英文的大小写):>TASM/ziA<Enter>若要生成列表文件,可用如下操作:>TASMA,,A.LST<Enter>TASM的选择项如下(可用/H显示):Syntax:TASM[options]source[,object][,listing][,xref]/a,/sAlphabeticorSource-codesegmentordering/cGeneratecross-referenceinlisting/dSYM[=VAL]DefinesymbolSYM=0,or=valueVAL/e,/rEmulatedorRealfloating-pointinstructions/h,/?Displaythishelpscreen/iPATHSearchPATHforincludefiles/jCMDJaminanassemblerdirectiveCMD(eg./jIDEAL)/kh#Hashtablecapacity#symbols/l,/laGeneratelisting:l=normallisting,la=expandedlisting/ml,/mx,/muCasesensitivityonsymbols:ml=all,mx=globals,mu=none/mv#Setmaximumvalidlengthforsymbols/m#Allow#multiplepassestoresolveforwardreferences/nSuppresssymboltablesinlisting/o,/opGenerateoverlayobjectcode,PharLap-style32-bitfixups/pCheckforcodesegmentoverridesinprotectedmode/qSuppressOBJrecordsnotneededforlinking/tSuppressmessagesifsuccessfulassembly/w0,/w1,/w2Setwarninglevel:w0=none,w1=w2=warningson/w-xxx,/w+xxxDisable(-)orenable(+)warningxxx/xIncludefalseconditionalsinlisting/zDisplaysourcelinewitherrormessage/zi,/zdDebuginfo:zi=full,zd=linenumbersonly链接程序生成可执行文件由汇编后建立的目标码文件,必须经过链接后才能生成可执行的命令文件一使用LINK完成连接>LINK文件名;回车后调入链接程序,此时屏幕显示。RunFile[文件名.EXE]:;回车默认该文件名。ListFile[NUL.MAP]:;Libraries[.LIB]:;回车。Warning:;提示错误。如果有错误,返回编辑程序重新修改源程序。若要生成.COM文件,则用EXE2BIN实现:>EXE2BINA.EXEA.COM二使用TLINK完成连接例如:链接A文件。>TLINKA<Enter>TurboLinkVersion4.0Copyright(c)1991BorlandInternational可按要求填加必要的选择。例如若需要在Debug中跟踪源文件调试,应使用/V选择(应注意选择项英文的大小写):>TLINK/vA<Enter>若要生成COM文件,可使用/Tdc选择:>TLINK/TdcA<Enter>TLINK的选择项如下(可用/H显示):Syntax:TLINKobjfiles,exefile,mapfile,libfiles,deffile@xxxxindicatesuseresponsefilexxxxOptions:/m=mapfilewithpublics/x=nomapfileatall/i=initializeallsegments/l=includesourcelinenumbers/L=specifylibrarysearchpaths/s=detailedmapofsegments/n=nodefaultlibraries/d=warnifduplicatesymbolsinlibraries/c=lowercasesignificantinsymbols/3=enable32-bitprocessing/v=includefullsymbolicdebuginformation/e=ignoreExtendedDictionary/t=createCOMfile(sameas/Tc)/o=overlayswitch/P[=NNNNN]=packcodesegments/A=NNNN=setNewExesegmentalignmentfactor/ye=expandedmemoryswapping/yx=extendedmemoryswapping/C=casesensitiveexportsandimports/Txx=specifyoutputfiletype/Tdx=DOSimage(default)/Twx=Windowsimage(thirdlettercanbec=COM,e=EXE,d=DLL)汇编语言动态调试工具调试汇编程序一使用DEBUG进行调试DEBUG是专为汇编语言设计的一种调试工具,可用来检查,修改存储单元和寄存器的内容装入,存储及启动运行程序,也可用DEBUG汇编简单的汇编语言程序。>DEBUG文件名.EXE-;"-"是DEBUG的提示符DEBUG下的基本命令及格式(具体见《DEBUG使用说明》)命令任务格式A(Assmble)汇编语句A[address]C(Compare)比较内存CrangeaddressD(Dump)显示内存D[address]E(Enter)改变内存EaddresslistF(Fill)填充内存FrangelistG(GO)执行程序G[address]H(Hexarthmetic)十六进制运算HValueValueI(Input)输入IportaddressL(Load)装入内存L[address]M(Move)传送内存MrangerangeN(Name)定义文件N[d:][path]filename[.com]O(output)输出字节OportaddressbyteQ(Quit)退出DEBUG状态QR((Register)显示寄存器R[registername]S(Search)检索字符SranglistT(Trace)单步/多步跟踪TorT[address][value]U(Unassmble)反汇编U[address]orU[range]W(Write)文件或数据写盘W[address[drivesectorsector]]二使用TD(TurboDebugger)调试汇编程序TD设计具有Turbo系列语言的特点,其多重覆盖窗口、下拉菜单和弹出菜单的结合给用户提供了一个快速友好的交互环境,帮助系统使用十分方便。以下给出常用操作命令,具体命令见《TurboDebugger命令一览表》。A启动TurboDebuggerSyntax:>TDobjfiles例如:调试已编译链接后的A文件:>TDA<Enter>进入TD后屏幕显示下拉菜单栏:在屏幕的上端代码区域:按地址,机器码及助记符组成寄存器域:CPU中寄存器内容标志域:CPU中所有标志状态堆栈区域:当前堆栈内容数据区域:以地址,ASCII码值及ASCII码显示数据常用命令栏:在屏幕下端屏幕中间区域可通过TAB键移动BF10或Alt-进入菜单提示栏,回车选择对应菜单例如:Alt-F进入屏幕上端的File栏,回车后显示下拉菜单,移动光标可选择相应功能。CAlt-F10访问局部菜单通过该命令,用户可容易的进入当前栏的局部菜单。D窗口命令使用下拉菜单的Window,可进入多窗口显示,用户可调试窗口的位置和大小,以最佳的方式观察程序执行过程同时可切换不同显示窗口。E常用执行命令在常用命令栏有提示,以下给出更有趣的命令:连续慢速执行在RUN菜单下选择Animate反向跟踪执行Alt-F4断点方式执行用F2设断点,使用RUN命令后停在断点处五.实验内容:1.输入以下程序,完成由编辑、编译、链接到调试的全过程。在调试过程中应使用单步、断点等方法调试,注意观察寄存器、标志位和有关存储器内容的变化A将S1(BYTE),S2(WORD)和S3(DWORD)送至D1,D2,D3.注意:以下程序有误,在调试过程中加以修改使之正确DATASEGMENTSS1 DB1234HSS2 DWEA32HSS3 DD12345678HDD1DB0DD2DW?DD3DW?DATEENDSCODESEGMEMTASUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,SS1MOVDD1,ALLEASI,SS2LEADI,DD2MOVAX,[SI]MOV[DI],AXMOVSI,OFFSETS3MOVDI,OFFSETD3MOVAX,[SI]MOVD3,AXINCSIINCDIMOVAX,[SI]MOV[DI],AXMOVAX,4C00H;返回系统INT21HCODEENDSENDSSTRATB完成两个长整数相加的汇编程序要求:调

温馨提示

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

评论

0/150

提交评论