




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10.1 汇编语言程序设计上机概述 10.2 汇编程序 10.3 连接程序 10.4 调试工具,第10章 汇编语言程序设计上机指导,10.1 汇编语言程序设计上机概述,10.1.1 上机环境 为了对包括Pentium指令在内的汇编语言的源程序文件进行汇编,应有一台Pentium以上的计算机。操作系统使用DOS 5.0以上版本或在Windows操作系统命令提示符下进行。编辑程序可用EDIT等。 MASM 5.0以上宏汇编系统,包括: (1) MASM:汇编程序 (2) LINK:连接程序 (3) CREF:索引程序 (4) LIB:库管理程序 用DEBUG调试程序时,假定后面的内容假定在C盘上建立了MASM子目录,且上述程序都在该目录中或建立了相应路径。,第10章 汇编语言程序设计上机指导,10.1.2 汇编语言源程序上机操作步骤 从编写好的汇编语言源程序到计算机可以运行这个程序,中间要经历一些步骤。可以归纳如下: 1编辑源文件 根据给定的任务编写程序。一般在编辑过程中总会有错误产生,因此还要进行人工检查、重新编辑修改,直到所编辑的源程序认为无误为止。最后将它以一个源程序文件(.ASM文件)存盘。 2汇编源程序文件 由编辑程序所建立的.ASM文件只是一个文本文件,计算机无法直接运行该文件。需要经过汇编程序的汇编,使其转换为目标代码文件。它是通过调用宏汇编MASM程序完成这一汇编操作的。汇编程序还将对源程序进行语法检查,如发现有错,将给出错误原因。程序设计者可根据它分析和修改源程序,并再经过汇编,直到无误为止,此时得到的是一个目标文件(.OBJ)。,第10章 汇编语言程序设计上机指导,3目标文件 目标文件为浮动的相对地址,是不可以直接执行的。必须经过连接,把有关模块连接在一起构成统一的编址,从而为运行提供条件。在运行时,装填到内存中的具体位置由段地址来确定。连接过程是由LINK连接程序实现的。此时得到的是一个可执行文件(.EXE文件)。 4运行可执行文件 得到该可执行文件后,就可以直接调用运行该可执行文件。如果程序设计正确,则可获得正确的运行结果。但对于一个较大的程序,往往会有很多设计上的逻辑错误,不可能一次就得到正确的结果。,返回本章首页,第10章 汇编语言程序设计上机指导,10.2.1汇编程序的类别 经过编辑程序所建立的汇编语言源程序,是不能直接在计算机上运行的,必须经过汇编、连接后才能运行。目前使用的汇编程序中,主要有Microsoft公司的宏汇编MASM5.0和MASM6.11及Borland公司的Trubo Assember5.0等版本,它们的基本功能是相似的,但高版本功能更强一些。另外,MASM6.11系统所提供的编程集成环境PWB将源程序的编辑、汇编、连接和运行集成在一起,也是一种不错的选择。MASM5.0支持80386以下CPU的指令集,以下以MASM5.0为例介绍汇编程序。,10.2 汇编程序,第10章 汇编语言程序设计上机指导,10.2.2 汇编过程 宏汇编程序是二次扫描的汇编程序,它两次从头到尾逐行扫描源程序完成汇编过程。第一次扫描用来定义源程序每个行的相对位置。汇编程序中有一个软件计数器,称为定位计数器或地址计数器LC(Location Counter)。当每个段开始时,LC复位(LC=0)。汇编程序在逐行扫描中,LC按每行指令的字节数进行计数。读入一个源程序行后,先查看其是否为伪指令,若为伪指令则LC不计数,否则将指令长度(指令字节数)送L。再检查此行语句是否有标号,若有则把标号写到一个符号表中,并且把现行LC(即为上一条指令的计数结果)赋给标号且填入符号表中,然后将 LC+LLC,形成下一条指令的地址,即这条指令在段中的相对位置,称为段内偏移量。若语句没有标号则直接将 LC十LLC及其后的操作,其它行按同样的方法处理,直至扫描到END指令时结束第一次扫描,这样通过第一次扫描可将源程序中的标号、变量的偏移量等填进符号表中,从而构成并得到了各条指令的相对地址和一张符号表。在第一次扫描时还计算出了源程序机器码的总长度,并可检查出一些语法错误,但不产生机器码。,第10章 汇编语言程序设计上机指导,汇编程序的第二次扫描是把汇编指令翻译成机器码,它根据汇编程序中的指令代码表找到汇编指令助记符对应的机器指令操作码,再根据第一次扫描产生的符号表,将指令中的符号操作数在符号表中查到,并找到其偏移值,从而将每条汇编指令翻译成机器代码并写到目标程序文件中去。在第二次扫描时,还要进行语法检查,将第一次扫描时未检查到的语法错误查出并显示。在第二次扫描后除了产生出目标程序文件(.OBJ)外,还可根据需要产生列表文件(.LST)和交叉索引文件(.CRF)。,第10章 汇编语言程序设计上机指导,其中: 目标程序文件其扩展名为.OBJ。在这个程序文件中,操作码部分已变成了机器码,可由机器识别,但地址操作数部分只是一个可浮动的相对地址,而不是内存中的绝对地址。 列表文件其扩展名为.LST。此文件包含源程序及其注释、地址和目标码(即汇编后的目标程序)。它们都是用ASCII码表示的文本文件,需要时可用编辑程序将其打开以供查阅。 交叉索引文件其扩展名为.CRF。交叉索引文件是用来了解源程序中每个符号是在哪里定义的。哪些指令用到了这个符号,给出该指令的行号。交叉索引文件对较大的程序很有用,可以用来帮助查错。要把交叉索引文件打印出来,必须用CREF程序生成交叉索引列表文件,然后用编辑程序等查看。,第10章 汇编语言程序设计上机指导,10.2.3 操作过程 首先启动操作系统,假设MASM系统(以MASM5.0为例)已预先装在硬盘的MASM子目录中。下面均以C盘上操作为例进行说明。假设事先用编辑程序编辑的源程序为yfile.ASM,则汇编过程如下:,C:MASMmasm Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985,1987.All rights reserved. Source filename.ASM:Myfile Object filename.OBJ: Source listing NUL.LST: Cross-reference NUL.CRF: 51698+417454 Bytes symbol space free O Warning Errors O Severe Errors,第10章 汇编语言程序设计上机指导,宏汇编程序被调入以后,先显示版本号。然后依次提出提示,请求用户回答。 第一行提问被汇编的源文件的名字,方括号内表示此文件带有后缀.ASM(.ASM是该源程序文件的隐含扩展名),此时应键入将要汇编的源程序文件的名字,并按回车键。 第二行提问汇编后目标文件的名字,括号中的名字表示约定的文件名(其文件名部分自动采用源程序文件名),若采用这个名字则直接键入回车键,否则键入另起的名字。,第10章 汇编语言程序设计上机指导,第三行提问是否要建立列表文件。括号中的NUL为“空”的意思,表示不建立列表文件。若要建立列表文件,则需键入文件名,名字任选,也可同源程序文件名。但后缀必须为.LST,后缀可由用户连同文件名一起键入,也可不键入,即自动采用隐含值。如果不需要建立列表文件,则在第三行提问后直接按回车键。 第四行是询问是否要建立交叉索引文件,括号中的意义同第三行,若不需交叉索引文件,可直接按回车键,否则键入交叉索引文件名。,第10章 汇编语言程序设计上机指导,也可以直接用下面的命令进行汇编: C:MASMMASM Myfile 提示同上。,第10章 汇编语言程序设计上机指导,用EDIT编辑程序观看列表文件的操作步骤如下: C:MASMEDIT 文件名.LST 汇编后,也可查看交叉索引文件,以了解源程序中的符号定义和引用情况。其操作步骤如下: C:MASMCREF Cref filename.CRF:交叉索引文件名 List filenamefilename.REF: C:MASMEDIT filename.REF 在第一行提示下,打入汇编时在第四行询问时所键入的交叉索引文件名。 第二行提示,可直接回车,表示采用括号中的文件名。 第三行的EDIT程序就可列出交叉索引的列表文件了。 如果在汇编时没有要求产生交叉索引文件,当然也就无需用CREF产生交叉索引文件了。,返回本章首页,第10章 汇编语言程序设计上机指导,10.3.1 连接程序的作用 由汇编程序生成的目标程序文件仍然不能执行,必须经过连接程序LINK连接以后,才能变成可执行文件。因为目标程序文件中有些指令地址还未完全确定,因此仍未成为可以用操作系统装入的程序形式。再者可能要将几个目标文件组合成一个功能更强的实用文件,甚至要和某些高级语言的目标程序文件进行组合,这些都要由连接程序LINK来完成。通过连接程序可将若干个目标文件连接成一个地址可浮动的、可由操作系统装入程序对地址定位的可执行文件。,10.3 连接程序,第10章 汇编语言程序设计上机指导,这里要注意的是:连接程序LINK并不仅是为汇编语言程序所专用的。它作为Microsoft的80X86目标连接程序,可将宏汇编或高级语言(例如C、PASCAL等)编译生成的目标文件连接在一起,成为一个可执行程序。并以后缀为.EXE的文件方式存盘。在操作系统命令提示符下,可直接输入该文件名来执行这个程序。,第10章 汇编语言程序设计上机指导,10.3.2 连接过程 在连接之前,源程序必须通过汇编或编译成为目标文件。在执行连接操作时,以一定的格式将这些目标文件与需要的库文件一起提供给连接程序。连接程序将它们的代码和数据进行组合,成为可执行文件。操作系统能够利用装入程序将可执行文件加载到内存的适当位置,然后运行之。注意:连接程序LINK只能处理在1MB地址以下运行的程序。,第10章 汇编语言程序设计上机指导,10.3.3 LINK的使用与操作 LINK连接目标文件有两种常用的操作方式: 会话方式 命令方式 不论在哪种操作方式下,若想停止连接程序的工作,可按CTRL+C键来中断LINK程序的执行。,第10章 汇编语言程序设计上机指导,1会话方式 首先在含有LINK程序的软盘插入软盘驱动器中,或预先将其存在硬盘上。在操作系统命令提示符下键入LINK,连接程序就被调入。LINK程序将显示有关信息并依次给出提示信息请用户逐行回答。屏幕显示如下:,C:MASMLINK Microsoft (R)Overlay Linker Version 3.60 Copyright (C)Microsoft Corp 1985-1987.All rights reserved. Object Modules .OBJ:myfile Run File MYFILE.EXE: List File NUL.MAP: Libraries .LIB: Warning:no stack segment,第10章 汇编语言程序设计上机指导,第一行提示要求输入目标模块名。此时应键入你要连接的目标文件名(后缀.OBJ可省略,LINK程序自动加上.OBJ为后缀)。若要连接的是多个目标模块时,一定要用“+”号或空格将每个文件名分开。如果输入的名字一行放不下,就在该行的最后输入一个“+”号,然后按回车键,这时连接程序就提示用户追加目标文件。所有目标文件输入完后回车。 第二行提示要求输入将要生成的可执行文件的文件名,括号内为LINK程序给出的隐含文件名,它与第一行提示中的目标模块名一样,只是将后缀换成.EXE。若第一行回答的目标模块是多个的话,则隐含的可执行文件名取为第一个目标文件名。此行可不输入文件名而直接回车。,第10章 汇编语言程序设计上机指导,第三行提示问是否要建立列表(映象)文件,若要建立,可键入列表文件名,这时可不输入扩展名,由LINK程序自动按隐含值.MAP为扩展名。如果不想要列表文件,此行提示时直接按回车键即可。 第四行提示问是否需要连接库文件。若不需要,则直接按回车键。所谓库文件,是一些经常使用的目标文件的集合。它是为了提高效率,为了调试的方便而建立的。宏汇编语言可以把一些经常使用的子程序段单独汇编。这些单独汇编和调试的程序作为外部子程序,将它们以目标文件的形式存储起来而成为一个文件库。可把若干个目标文件集中起来,组成一个文件库,由库管理程序LIB对其进行编辑管理。,第10章 汇编语言程序设计上机指导,【例10.1 】连接目标模块ex1.OBJ,ex2.OBJ,ex3.OBJ建立一个名为ex1. EXE的可执行文件。 操作如下: C:MASMLINK Microsoft (R)Overlay Linker Version 3.60 Copyright (C)Microsoft Corp 1985-1987.All rights reserved. Object ModulesOBJ:ex1+ex2+ Object Modules .OBJ:ex3/pause Run FileEX1.EXE: List FileNUL MAP: Libraries .LIB:,第10章 汇编语言程序设计上机指导,第一行目标模块没输完,最后键入“+”号,则LINK程序。 第二行继续提示输入目标模块。第二行末尾的”/pause”为LINK程序的可选择的参数项。这里键入了这个参数,表示当几个目标模块不在一张磁盘上时,连接过程中需要换盘。在换盘时此参数可使连接程序暂停,待换好盘后继续执行。 第三行键入回车表示执行程序名选择括号里提示的名字。 第四行键入回车表示不建立列表文件。 第五行键入回车表示连接过程中不需要用文件库中的目标模块。,第10章 汇编语言程序设计上机指导,【例10.2 】连接目标模块ex1.OBJ,ex2.OBJ程序时用到了A驱动器上LIB目录下的库文件EX.LIB,可执行文件名为exa.EXE,建立一个名为aaa.MAP的映象(列表)文件。 操作过程: C:MASMLINK Microsoft (R)Overlay Linker Version 3.60 Copyright (C)Microsoft Corp 1985-1987.All rights reserved. Object Modules .OBJ:ex1+ex2 Run File EX1.EXE:exa.exe List File NUL-MAP:aaa Libraries .LIB:a:libex 注:关于库文件的建立方法见10.3.4节。,第10章 汇编语言程序设计上机指导,目前常用的汇编语言调试工具主要有DEBUG、Code View及Turbo Debuger等,其中DEBUG通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。,10.4 调试工具,第10章 汇编语言程序设计上机指导,10.4.1 DEBUG程序的调用 在操作系统的命令提示符下,可键入命令: C:MASMDEBUG d:PATHfilename.extparm1parm2 其中,文件名是被调试文件的名字。如用户键入文件名,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的d指定驱动器,PATH为路径,parm1和parm2则为运行被调试文件时所需要的命令参数。 在DEBUG程序调入后,将出现提示符“”,此时就可用DEBUG命令来调试程序。,第10章 汇编语言程序设计上机指导,10.4.2 DEBUG的主要命令 1显示存储单元的命令D(DUMP),格式为: -Daddress或 -Drange 例如,按指定范围显示存储单元内容的方法为: - D100 120 18E4:0100 72 6F 72 20 72 0D 61 64-69 6E 67 20 64 72 69 76 ror r.ading driv 18E4:0110 73 75 24 66 69 63 69 65-6E 74 20 6D 65 6D 6F 72 su.ficient memor 其中0100H至011FH是DEBUG显示的单元内容。左边用10六进制表示每个字节,右边用ASCII字符表示每个字节,“.”表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。,第10章 汇编语言程序设计上机指导,2修改存储单元内容的命令E(Enter) 此命令有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为: -E address list 例如,-E ds:100 F5 OK 78 其中F5,O,K和78各占一个字节,该命令可以用这五个字节来替代存储单元DS :0100到0104的原先的内容。,第10章 汇编语言程序设计上机指导,第二种格式则是采用逐个单元相继修改的方法。命令格式为: -E adress 例如,-E es:100 则可能显示为: 18E4:0100 89.- 如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如: 18E4:0100 89.78 1B.- 这样,用户可以不断修改相继单元的内容,直到用Enter键结束该命令为止。,第10章 汇编语言程序设计上机指导,4检查和修改寄存器内容的命令R(Register) 它有三种格式如下: (1)显示CPU内所有寄存器内容和标志位状态,其格式为: -R 例如: -R AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE EP=0000 SI=0000 DI=0000 DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC 18E4:0100 C7 0604023801 MOV WORD PTR 0204,0138 DS:0204=0138 其中标志位状态的含义如下:,第10章 汇编语言程序设计上机指导,表10.1 DEBUG 中标志位的符号表示,第10章 汇编语言程序设计上机指导,(2)显示和修改某个寄存器内容,其格式为: -R register name 例如,键入 -R AX 系统将响应如下: AX FlF4 : 即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,可键入欲修改的内容,如: -R BX BX 0369 :059F 则把BX寄存器的内容修改为059FH。,第10章 汇编语言程序设计上机指导,(3)显示和修改标志位状态,命令格式为: -RF 系统将响应,如: OV DN EI NG ZR AC PE CY- 此时,如不修改其内容可按Enter键,否则,可键入欲修改的内容,如: OV DN EI NG ZR AC PE CY- PO NZ DI NV 可见键入的顺序可以是任意的,且标志间也可不用空格 。,第10章 汇编语言程序设计上机指导,5运行命令G(Go),其格式为: -G=address1address2address3. 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。,第10章 汇编语言程序设计上机指导,6跟踪命令T(Trace),有两种格式: (1)逐条指令跟踪 -T=adress 从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。 (2)多条指令跟踪 -T=addressValue 从指定地址起执行n条指令后停下来,n由value指定。,第10章 汇编语言程序设计上机指导,7程序步跟踪命令P(Programming step) 由于T命令在遇到操作系统或BIOS中断时会跟踪到中断服务程序内部,有时出现死机现象,因而可用步跟踪命令P(Programming step)代替T命令,以避免上述现象。P命令的使用格式为: -P=addressValue,第10章 汇编语言程序设计上机指导,8汇编命令A(Assemble),其格式为: -Aaddress 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意: DEBUG把键入的数字均看成10六进制数,所以如要键入10进制数,则其后应加以说明,如100D。,第10章 汇编语言程序设计上机指导,9反汇编命令U(Unassemble),有两种格式。 (1)从指定地址开始,反汇编32个字节,其格式为: -Uaddress 例如: -U100 18E4:0100 C70604023801 MOV WORD RTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PIR0208,0202 18E4:0112 BB0402 MOV BX,0204 18E4:0115 E80
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025朝花夕拾阅读心得体会(20篇)
- 农村红利专项管理制度
- 试用期工作自我鉴定(30篇)
- 信息系统监理师考试资源整合及试题答案分享
- 语文教师期末成绩分析总结与反思(17篇)
- 数据库错误日志分析方法试题及答案
- 员工食堂餐饮服务合同
- 乡村农业生态建设合同
- 计算机三级嵌入式技能考试试题及答案
- 理论结合实践公路工程考试的有效复习法试题及答案
- PHPstorm激活码2025年5月13日亲测有效
- 2022年高考地理试卷(天津)(解析卷)
- 《ISO 37001-2025 反贿赂管理体系要求及使用指南》专业解读和应用培训指导材料之4:6策划(雷泽佳编制-2025A0)
- T-CSTM 00290-2022 超高性能混凝土检查井盖
- 2025年2月21日四川省公务员面试真题及答案解析(行政执法岗)
- 球团机械设备工程安装及质量验收标准
- 餐厅刀具使用管理制度
- 安全微课考试试题及答案
- 实施《保护世界文化与自然遗产公约》的操作指南
- 混凝土路面施工劳务合同
- 数字修约考试题及答案
评论
0/150
提交评论