微机原理实验汇编程序上机过程.doc_第1页
微机原理实验汇编程序上机过程.doc_第2页
微机原理实验汇编程序上机过程.doc_第3页
微机原理实验汇编程序上机过程.doc_第4页
微机原理实验汇编程序上机过程.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

第一节 汇编程序的开发过程本节主要介绍了汇编语言源程序的编辑、汇编、连接的方法,DEBUG调试命令及其使用方法。一、 简介汇编语言源程序:用汇编语句编写的解决应用问题的程序。汇编程序:将汇编语言源程序翻译成机器语言程序的系统。汇编:将汇编语言程序翻译成机器语言程序的过程。在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。(1)编辑软件行编辑软件:EDLIN.COM全屏编辑软件:WPS、EDIT.COM、NE.COM、WORD、PE等。当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。(2)汇编程序有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。(3)连接程序用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。(4)辅助工具程序(.EXE)进行汇编语言程序调试和文件格式转换的程序有:DEBUG.COM 动态调试程序EXE2BIN.EXE 文件格式转换程序CREF.EXE 交叉引用程序编辑、汇编、连接、调试过程如下图所示。TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。二、 汇编源程序用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。为此,需键入:C:MASM 或 C:MASM按前一种格式键入,屏幕上显示:Microsoft(R) Macro assemble Version 5.00Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reservedOBJ filename.obj:Source listingnul.lst:Cross-referencenul.crf:以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。汇编后生成以下几个文件:(1).OBJ文件.OBJ文件是必须生成的一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个.OBJ文件,供下一步连接用。若源程序有语法错误时,会出现错误信息提示:源程序文件行 错误信息代码 错误说明信息最后信息提示: Warning errors (警告错误) Severe errors (严重错误)若严重错误总数不为0,则.OBJ文件没有生成,需回到编辑状态下修改源程序直到无错为止。(2).LST文件(列表文件).LST文件对调试程序有帮助,它是将源程序中各语句及其对应的目标代码和符号表以清单方式列出,如果需要,在屏幕显示的第二个提问的冒号后输入文件名即可,如果不需要,直接按回车键。(3).CRF文件(交叉引用文件)交叉引用.CRF文件给出了源程序中定义的符号引用情况,按字母顺序排列。.CRF文件不可显示,须用CREF.EXE系统程序将.CRF文件转换成为.REF文件后方可显示输出。若按后一种格式输入,系统会依次出现四个提示信息,比第一种格式多了一项源程序文件名的输入,应答方式与第一种格式相同。三、 连接目标程序汇编后生成的.OBJ文件,其所有目标代码的地址都是浮动的偏移地址,机器不能直接运行。必须用连接程序(LINK.EXE)对其进行连接装配定位,产生.EXE可执行文件,方可运行。在系统提示符下键入:LINK 或 LINK屏幕上出现以下提示信息:Microsoft(R) Macro assemble Version 5.00Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reservedRun file .EXE:List File nul.map:Libraries .lib:连接后,可生成两种文件:.EXE和.MAP(1).EXE文件(可执行文件)若采用方括号中的默认值,直接按回车键,否则需重新输入一文件名。若连接过程中无错误,则自动在当前工作盘生成.EXE文件。若有错误,则会给出错误信息提示,这时必须重新修改源程序,再汇编、连接。(2).MAP(连接映像文件)(3).LIB库文件连接程序询问是否使用某种库文件,不需使用库文件直接按回车键。(4)若要连接多个模块目标程序,可用“+”把它们连接起来。如:LINK files1+files2+files3若直接键入:LINK会依次出现四个提示信息,应答方式应与LINK相同,仅增加了一项输出,询问被连接的目标文件名字。四、运行程序经过汇编、连接后生成的.EXE文件,可在DOS系统直接运行,只要键入相应的文件名即可。如:C:MASMDOS的COMMAND.COM模块将该程序装配到内存,并设置和分配启动地址。也可在DEBUG调试程序下运行。如何用DEBUG程序来运行和调试程序将在DEBUG调试程序中详细讨论。五、DEBUG调试程序DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。利用DEBUG调试程序,可以将一个可执行程序(如.EXE、.COM等)装入内存中,并接管对程序运行的控制权,通过采取如反汇编、断点运行、单步执行、寄存器内容修改等方法,对可执行程序进行跟踪、调试,以找出其中的设计错误,然后再对源程序进行相应修改,重新生成正确的可执行程序。1、 准备被调试程序:假定所有有关文件均在当前路径C:MYTEST下,按照前面的步骤生成一个被调试的可执行程序(如TEST.EXE),参考程序如下:DATA SEGMENT STR DB Hello,World!$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRMOV AH,09HINT 21H MOV AH,4CH INT 21HCODE ENDSEND START2、进入DEBUG环境:(其中斜体部分由键盘输入)C: MYTESTDEBUG TEST.EXE-其中,短线-作为DEBUG环境的操作提示符,在此提示符下,可以输入各种DEBUG命令,对可执行程序TEST.EXE进行跟踪调试。3、主要调试命令:1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解。一般常用以下格式:a) -U:从当前IP处开始,对连续约32字节内容反汇编。如对TEST.EXE,刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:-U12B7:0000B8B612MOV AX,12B612B7:00038ED8 MOV DS,AX12B7:0005BA0000 MOV DX,000012B7:0008B409 MOV AH,0912B7:000ACD21 INT 21 12B7:000CB44C MOV AH,4C 12B7:000ECD21 INT 21 12B7:0010EB51 JMP 0063 12B7:00128B867AF MOV AX,BP+FF7A 12B7:001F8B4604 MOV AX,BP+04 -在上例中,12B7:0000表示CS:IP的内容(其中CS的值是动态值);B8B612代表该处存放的二进制数据,亦即指令MOV AX,12B6的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中的JMP 0063以后的部分,显然不是TEST.EXE的内容。另外还需注意,DEBUG默认使用十六进制。b) U 0123:从指定的IP=0123处开始,对连续约32字节内容反汇编。c) U 0123 0143:从指定的IP=0123处开始反汇编,直至指定的0143处结束。2)显示寄存器命令R:显示或修改寄存器的内容。一般常用以下形式:a)-R:显示所有寄存器当前的内容及当前将执行的指令。如对TEST.EXE,在程序运行之前,键入R命令:-RAX=0000 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12A6 ES=12A6 SS=12B6 CS=12B7 IP=0000 NV UP EI PL NZ NA PO NC 12B7:0000 B8B612 MOV AX, 12B6 -在显示寄存器内容时,标志寄存器F(或程序状态字寄存器PSW)表示成各个分离的标志位,其意义如下表所示:溢出 方向 中断 符号 零辅助进位 奇偶 进位0 NV UP DI PL NZ NA PO NC1 OV DN EI NG ZR AC PE CYb)-R AX:显示指定的AX寄存器当前的内容,并等待键入新值;如果不作修改,可直接回车。如:-R AXAX 0000:1234-c)-R F:显示标志寄存器F各个标志位的内容,并等待键入新的标志位;如果不作修改,可直接回车。如:-R FNV UP EI PL NZ NA PO NC -ZR-3)运行命令G:使程序在DEBUG控制下运行,一般有全程、断点运行两种方式。a)-G:控制程序由当前IP处运行,直至程序结束。如果当前IP为初始值,其作用则相当于直接在DOS下运行程序,一般用于快速观察程序的运行情况。b)-G =0102:控制程序从偏移地址0102H处开始执行程序,直至程序结束。c)-G 0123:控制程序由当前IP处运行,直至指定的断点IP=0123H处,程序暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。如对TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至000A处:-G 000AAX=09B6 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12B6 ES=12A6 SS=12B6 CS=12B7 IP=000A NV UP EI PL NZ NA PO NC 12B7:000A CD21 INT 21 -断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、缓冲区、标志等)来判断程序是否运行正确。4)单步命令T:控制程序运行一条指令后暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。如对TEST.EXE,若当前IP为初始值,则键入T命令后有如下显示:-TAX=12B6 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12A6 ES=12A6 SS=12B6 CS=12B7 IP=0003 NV UP EI PL NZ NA PO NC 12B7:0003 8ED8 MOV DS,AX -单步命令一般用于需对程序运行作仔细分析的地方,如判断分支转移、观察运算结果等。若能综合运用断点及单步指令,则可大大提高DEBUG 调试的速度及效率。但应注意,当IP指针位于INT 21H一类指令处时,执行T命令将会使程序进入该功能调用子程序中,因此,这种情况下最好不用T命令,而用断点运行命令跳过该类功能调用指令。5)显示内存命令D:以十六进制及ASCII两种方式显示内存区的二进制数据,通常用来观察数据段内的缓冲区内容。一般常用以下二种形式:a)-D:从0000单元开始,连续显示128个内存单元的内容,如果继续键入D命令,则继续显示后128个单元内容。如对TEST.EXE,若想观察字符串显示时的字符串内容是否正确,则可在程序断点运行至000A处,键入D命令:-D DS:012B6:0000 48 65 6C 6C 6F 2C 57 6F-72 6C 64 21 24 00 00 00 Hello,World!$.12B6:0010 B8 B6 12 8E D8 BA 00 00-B4 09 CD 21 B4 4C CD 21 .!.L.!12B6:0020 EB 51 8B 86 7A FF 2B C6-40 50 8A 46 08 98 50 8B .Q.z.+.P.F.P.12B6:0070 83 C4 02 8B 5E 04 8A 07-2A E4 89 86 7A FF 3B C6 .*.

温馨提示

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

评论

0/150

提交评论