黄强汇编 汇编语言程序设计上机指导.pptx

上传人:莉*** 文档编号:90241265 上传时间:2023-05-13 格式:PPTX 页数:42 大小:190.04KB
返回 下载 相关 举报
黄强汇编 汇编语言程序设计上机指导.pptx_第1页
第1页 / 共42页
黄强汇编 汇编语言程序设计上机指导.pptx_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《黄强汇编 汇编语言程序设计上机指导.pptx》由会员分享,可在线阅读,更多相关《黄强汇编 汇编语言程序设计上机指导.pptx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、黄强 汇编 汇编语言程序设计上机指导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子目录,且上述程序都在该目录中或建立了相应路径。v第10章 汇编语言程序设计上机指导第1 页/共41

2、页10.1.2 汇编语言源程序上机操作步骤 从编写好的汇编语言源程序到计算机可以运行这个程序,中间要经历一些步骤。可以归纳如下:1编辑源文件 根据给定的任务编写程序。一般在编辑过程中总会有错误产生,因此还要进行人工检查、重新编辑修改,直到所编辑的源程序认为无误为止。最后将它以一个源程序文件(.ASM文件)存盘。2汇编源程序文件 由编辑程序所建立的.ASM文件只是一个文本文件,计算机无法直接运行该文件。需要经过汇编程序的汇编,使其转换为目标代码文件。它是通过调用宏汇编MASM程序完成这一汇编操作的。汇编程序还将对源程序进行语法检查,如发现有错,将给出错误原因。程序设计者可根据它分析和修改源程序,

3、并再经过汇编,直到无误为止,此时得到的是一个目标文件(.OBJ)。v第10章 汇编语言程序设计上机指导第2 页/共41 页 3目标文件 目标文件为浮动的相对地址,是不可以直接执行的。必须经过连接,把有关模块连接在一起构成统一的编址,从而为运行提供条件。在运行时,装填到内存中的具体位置由段地址来确定。连接过程是由LINK连接程序实现的。此时得到的是一个可执行文件(.EXE文件)。4运行可执行文件 得到该可执行文件后,就可以直接调用运行该可执行文件。如果程序设计正确,则可获得正确的运行结果。但对于一个较大的程序,往往会有很多设计上的逻辑错误,不可能一次就得到正确的结果。返回本章首页v第10章 汇编

4、语言程序设计上机指导第3 页/共41 页10.2.1汇编程序的类别 经过编辑程序所建立的汇编语言源程序,是不能直接在计算机上运行的,必须经过汇编、连接后才能运行。目前使用的汇编程序中,主要有Microsoft公司的宏汇编MASM5.0和MASM6.11及Borland公司的Trubo Assember5.0等版本,它们的基本功能是相似的,但高版本功能更强一些。另外,MASM6.11系统所提供的编程集成环境PWB将源程序的编辑、汇编、连接和运行集成在一起,也是一种不错的选择。MASM5.0支持80386以下CPU的指令集,以下以MASM5.0为例介绍汇编程序。10.2 汇编程序 v第10章 汇编

5、语言程序设计上机指导第4 页/共41 页10.2.2 汇编过程 宏汇编程序是二次扫描的汇编程序,它两次从头到尾逐行扫描源程序完成汇编过程。第一次扫描用来定义源程序每个行的相对位置。汇编程序中有一个软件计数器,称为定位计数器或地址计数器LC(Location Counter)。当每个段开始时,LC复位(LC=0)。汇编程序在逐行扫描中,LC按每行指令的字节数进行计数。读入一个源程序行后,先查看其是否为伪指令,若为伪指令则LC不计数,否则将指令长度(指令字节数)送L。再检查此行语句是否有标号,若有则把标号写到一个符号表中,并且把现行LC(即为上一条指令的计数结果)赋给标号且填入符号表中,然后将 L

6、C+LLC,形成下一条指令的地址,即这条指令在段中的相对位置,称为段内偏移量。若语句没有标号则直接将 LC十LLC及其后的操作,其它行按同样的方法处理,直至扫描到END指令时结束第一次扫描,这样通过第一次扫描可将源程序中的标号、变量的偏移量等填进符号表中,从而构成并得到了各条指令的相对地址和一张符号表。在第一次扫描时还计算出了源程序机器码的总长度,并可检查出一些语法错误,但不产生机器码。v第10章 汇编语言程序设计上机指导第5 页/共41 页 汇编程序的第二次扫描是把汇编指令翻译成机器码,它根据汇编程序中的指令代码表找到汇编指令助记符对应的机器指令操作码,再根据第一次扫描产生的符号表,将指令中

7、的符号操作数在符号表中查到,并找到其偏移值,从而将每条汇编指令翻译成机器代码并写到目标程序文件中去。在第二次扫描时,还要进行语法检查,将第一次扫描时未检查到的语法错误查出并显示。在第二次扫描后除了产生出目标程序文件(.OBJ)外,还可根据需要产生列表文件(.LST)和交叉索引文件(.CRF)。v第10章 汇编语言程序设计上机指导第6 页/共41 页其中:目标程序文件其扩展名为.OBJ。在这个程序文件中,操作码部分已变成了机器码,可由机器识别,但地址操作数部分只是一个可浮动的相对地址,而不是内存中的绝对地址。列表文件其扩展名为.LST。此文件包含源程序及其注释、地址和目标码(即汇编后的目标程序)

8、。它们都是用ASCII码表示的文本文件,需要时可用编辑程序将其打开以供查阅。交叉索引文件其扩展名为.CRF。交叉索引文件是用来了解源程序中每个符号是在哪里定义的。哪些指令用到了这个符号,给出该指令的行号。交叉索引文件对较大的程序很有用,可以用来帮助查错。要把交叉索引文件打印出来,必须用CREF程序生成交叉索引列表文件,然后用编辑程序等查看。v第10章 汇编语言程序设计上机指导第7 页/共41 页10.2.3 操作过程 首先启动操作系统,假设MASM系统(以MASM5.0为例)已预先装在硬盘的MASM子目录中。下面均以C盘上操作为例进行说明。假设事先用编辑程序编辑的源程序为yfile.ASM,则

9、汇编过程如下:C:MASMmasmMicrosoft(R)Macro Assembler Version 5.00Copyright(C)Microsoft Corp 1981-1985,1987.All rights reserved.Source filename.ASM:MyfileObject filename.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF:51698+417454 Bytes symbol space free O Warning Errors O Severe Errors v第10章 汇编语言程序设计上机指导

10、第8 页/共41 页 宏汇编程序被调入以后,先显示版本号。然后依次提出提示,请求用户回答。第一行提问被汇编的源文件的名字,方括号内表示此文件带有后缀.ASM(.ASM是该源程序文件的隐含扩展名),此时应键入将要汇编的源程序文件的名字,并按回车键。第二行提问汇编后目标文件的名字,括号中的名字表示约定的文件名(其文件名部分自动采用源程序文件名),若采用这个名字则直接键入回车键,否则键入另起的名字。v第10章 汇编语言程序设计上机指导第9 页/共41 页 第三行提问是否要建立列表文件。括号中的NUL为“空”的意思,表示不建立列表文件。若要建立列表文件,则需键入文件名,名字任选,也可同源程序文件名。但

11、后缀必须为.LST,后缀可由用户连同文件名一起键入,也可不键入,即自动采用隐含值。如果不需要建立列表文件,则在第三行提问后直接按回车键。第四行是询问是否要建立交叉索引文件,括号中的意义同第三行,若不需交叉索引文件,可直接按回车键,否则键入交叉索引文件名。v第10章 汇编语言程序设计上机指导第10 页/共41 页也可以直接用下面的命令进行汇编:C:MASMMASM Myfile提示同上。v第10章 汇编语言程序设计上机指导第1 1 页/共41 页 用EDIT编辑程序观看列表文件的操作步骤如下:C:MASMEDIT 文件名.LST 汇编后,也可查看交叉索引文件,以了解源程序中的符号定义和引用情况。

12、其操作步骤如下:C:MASMCREFCref filename.CRF:交叉索引文件名List filenamefilename.REF:C:MASMEDIT filename.REF 在第一行提示下,打入汇编时在第四行询问时所键入的交叉索引文件名。第二行提示,可直接回车,表示采用括号中的文件名。第三行的EDIT程序就可列出交叉索引的列表文件了。如果在汇编时没有要求产生交叉索引文件,当然也就无需用CREF产生交叉索引文件了。返回本章首页v第10章 汇编语言程序设计上机指导第12 页/共41 页10.3.1 连接程序的作用 由汇编程序生成的目标程序文件仍然不能执行,必须经过连接程序LINK连接以

13、后,才能变成可执行文件。因为目标程序文件中有些指令地址还未完全确定,因此仍未成为可以用操作系统装入的程序形式。再者可能要将几个目标文件组合成一个功能更强的实用文件,甚至要和某些高级语言的目标程序文件进行组合,这些都要由连接程序LINK来完成。通过连接程序可将若干个目标文件连接成一个地址可浮动的、可由操作系统装入程序对地址定位的可执行文件。10.3 连接程序 v第10章 汇编语言程序设计上机指导第13 页/共41 页 这里要注意的是:连接程序LINK并不仅是为汇编语言程序所专用的。它作为Microsoft的80X86目标连接程序,可将宏汇编或高级语言(例如C、PASCAL等)编译生成的目标文件连

14、接在一起,成为一个可执行程序。并以后缀为.EXE的文件方式存盘。在操作系统命令提示符下,可直接输入该文件名来执行这个程序。v第10章 汇编语言程序设计上机指导第14 页/共41 页10.3.2 连接过程 在连接之前,源程序必须通过汇编或编译成为目标文件。在执行连接操作时,以一定的格式将这些目标文件与需要的库文件一起提供给连接程序。连接程序将它们的代码和数据进行组合,成为可执行文件。操作系统能够利用装入程序将可执行文件加载到内存的适当位置,然后运行之。注意:连接程序LINK只能处理在1MB地址以下运行的程序。v第10章 汇编语言程序设计上机指导第15 页/共41 页10.3.3 LINK的使用与

15、操作 LINK连接目标文件有两种常用的操作方式:会话方式 命令方式 不论在哪种操作方式下,若想停止连接程序的工作,可按CTRL+C键来中断LINK程序的执行。v第10章 汇编语言程序设计上机指导第16 页/共41 页1会话方式 首先在含有LINK程序的软盘插入软盘驱动器中,或预先将其存在硬盘上。在操作系统命令提示符下键入LINK,连接程序就被调入。LINK程序将显示有关信息并依次给出提示信息请用户逐行回答。屏幕显示如下:C:MASMLINKMicrosoft(R)Overlay Linker Version 3.60Copyright(C)Microsoft Corp 1985-1987.Al

16、l rights reserved.Object Modules.OBJ:myfileRun File MYFILE.EXE:List File NUL.MAP:Libraries.LIB:Warning:no stack segmentv第10章 汇编语言程序设计上机指导第17 页/共41 页 第一行提示要求输入目标模块名。此时应键入你要连接的目标文件名(后缀.OBJ可省略,LINK程序自动加上.OBJ为后缀)。若要连接的是多个目标模块时,一定要用“+”号或空格将每个文件名分开。如果输入的名字一行放不下,就在该行的最后输入一个“+”号,然后按回车键,这时连接程序就提示用户追加目标文件。所有目

17、标文件输入完后回车。第二行提示要求输入将要生成的可执行文件的文件名,括号内为LINK程序给出的隐含文件名,它与第一行提示中的目标模块名一样,只是将后缀换成.EXE。若第一行回答的目标模块是多个的话,则隐含的可执行文件名取为第一个目标文件名。此行可不输入文件名而直接回车。v第10章 汇编语言程序设计上机指导第18 页/共41 页 第三行提示问是否要建立列表(映象)文件,若要建立,可键入列表文件名,这时可不输入扩展名,由LINK程序自动按隐含值.MAP为扩展名。如果不想要列表文件,此行提示时直接按回车键即可。第四行提示问是否需要连接库文件。若不需要,则直接按回车键。所谓库文件,是一些经常使用的目标

18、文件的集合。它是为了提高效率,为了调试的方便而建立的。宏汇编语言可以把一些经常使用的子程序段单独汇编。这些单独汇编和调试的程序作为外部子程序,将它们以目标文件的形式存储起来而成为一个文件库。可把若干个目标文件集中起来,组成一个文件库,由库管理程序LIB对其进行编辑管理。v第10章 汇编语言程序设计上机指导第19 页/共41 页【例10.1】连接目标模块ex1.OBJ,ex2.OBJ,ex3.OBJ建立一个名为ex1.EXE的可执行文件。操作如下:C:MASMLINKMicrosoft(R)Overlay Linker Version 3.60Copyright(C)Microsoft Corp

19、 1985-1987.All rights reserved.Object ModulesOBJ:ex1+ex2+Object Modules.OBJ:ex3/pauseRun FileEX1.EXE:List FileNUL MAP:Libraries.LIB:v第10章 汇编语言程序设计上机指导第20 页/共41 页 第一行目标模块没输完,最后键入“+”号,则LINK程序。第二行继续提示输入目标模块。第二行末尾的”/pause”为LINK程序的可选择的参数项。这里键入了这个参数,表示当几个目标模块不在一张磁盘上时,连接过程中需要换盘。在换盘时此参数可使连接程序暂停,待换好盘后继续执行。第三

20、行键入回车表示执行程序名选择括号里提示的名字。第四行键入回车表示不建立列表文件。第五行键入回车表示连接过程中不需要用文件库中的目标模块。v第10章 汇编语言程序设计上机指导第21 页/共41 页【例10.2】连接目标模块ex1.OBJ,ex2.OBJ程序时用到了A驱动器上LIB目录下的库文件EX.LIB,可执行文件名为exa.EXE,建立一个名为aaa.MAP的映象(列表)文件。操作过程:C:MASMLINKMicrosoft(R)Overlay Linker Version 3.60Copyright(C)Microsoft Corp 1985-1987.All rights reserve

21、d.Object Modules.OBJ:ex1+ex2Run File EX1.EXE:exa.exeList File NUL-MAP:aaaLibraries.LIB:a:libex 注:关于库文件的建立方法见10.3.4节。v第10章 汇编语言程序设计上机指导第22 页/共41 页 目前常用的汇编语言调试工具主要有DEBUG、Code View及Turbo Debuger等,其中DEBUG通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。10.4 调试工具 v第10章 汇编语言程序设计上机指导第23 页/共41 页10.4.1 DEBUG程序的调用 在操作系统的命令提示

22、符下,可键入命令:C:MASMDEBUG d:PATHfilename.extparm1parm2 其中,文件名是被调试文件的名字。如用户键入文件名,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的d指定驱动器,PATH为路径,parm1和parm2则为运行被调试文件时所需要的命令参数。在DEBUG程序调入后,将出现提示符“”,此时就可用DEBUG命令来调试程序。v第10章 汇编语言程序设计上机指导第24 页/共41 页10.4.2 DEBUG的主要命令1显示存储

23、单元的命令D(DUMP),格式为:-Daddress或-Drange例如,按指定范围显示存储单元内容的方法为:-D100 12018E4:0100 72 6F 72 20 72 0D 61 64-69 6E 67 20 64 72 69 76 ror r.ading driv18E4: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命令自动

24、显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。v第10章 汇编语言程序设计上机指导第25 页/共41 页2修改存储单元内容的命令E(Enter)此命令有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:-E address list 例如,-E ds:100 F5 OK 78 其中F5,O,K和78各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。v第10章 汇编语言程序设计上机指导第26 页/共41 页 第二种格式则是采用逐个

25、单元相继修改的方法。命令格式为:-E adress 例如,-E es:100 则可能显示为:18E4:0100 89.-如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如:18E4:0100 89.78 1B.-这样,用户可以不断修改相继单元的内容,直到用Enter键结束该命令为止。v第10章 汇编语言程序设计上机指导第27 页/共41 页4检查和修改寄存器内容的命令R(Register)它有三种格式如下:(1)显示CPU内所有寄存器内容和标志位状态,其格式为:-R 例如:-RAX=0000 BX=0000 CX=010A DX=0000 S

26、P=FFFE EP=0000 SI=0000 DI=0000DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC18E4:0100 C7 0604023801 MOV WORD PTR 0204,0138 DS:0204=0138 其中标志位状态的含义如下:v第10章 汇编语言程序设计上机指导第28 页/共41 页表10.1 DEBUG 中标志位的符号表示标志名称溢出OF方向DF中断IF符号SF零ZF辅助进位AF奇偶PF进位CF置位状态 OV DN EI NG ZR AC PE CY复位状态 NV UP DI PL NZ

27、 NA PO NCv第10章 汇编语言程序设计上机指导第29 页/共41 页(2)显示和修改某个寄存器内容,其格式为:-R register name 例如,键入-R AX 系统将响应如下:AX FlF4:即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,可键入欲修改的内容,如:-R BX BX 0369:059F 则把BX寄存器的内容修改为059FH。v第10章 汇编语言程序设计上机指导第30 页/共41 页(3)显示和修改标志位状态,命令格式为:-RF 系统将响应,如:OV DN EI NG ZR AC PE CY-此时,如不修改其内容可按Enter键,否则,可键入欲修改的

28、内容,如:OV DN EI NG ZR AC PE CY-PO NZ DI NV 可见键入的顺序可以是任意的,且标志间也可不用空格。v第10章 汇编语言程序设计上机指导第31 页/共41 页5运行命令G(Go),其格式为:-G=address1address2address3.其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。v第10章 汇编语言程序设计上机指导第32 页/共41 页6跟踪命令T(Trace),有两种格式:(1)逐条指令跟踪-T=adress

29、从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。(2)多条指令跟踪-T=addressValue 从指定地址起执行n条指令后停下来,n由value指定。v第10章 汇编语言程序设计上机指导第33 页/共41 页7程序步跟踪命令P(Programming step)由于T命令在遇到操作系统或BIOS中断时会跟踪到中断服务程序内部,有时出现死机现象,因而可用步跟踪命令P(Programming step)代替T命令,以避免上述现象。P命令的使用格式为:-P=addressValuev第10章 汇编语言程序设计上机指导第34 页/共41 页

30、8汇编命令A(Assemble),其格式为:-Aaddress 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成10六进制数,所以如要键入10进制数,则其后应加以说明,如100D。v第10章 汇编语言程序设计上机指导第35 页/共41 页9反汇编命令U(Unassemble),有两种格式。(1)从指定地址开始,反汇编32个字节,其格式为:-Uaddress 例如:-U100 18E4:0100 C70604023801 MOV WORD RTR0204,0138 18E4:0106 C70606020002 MO

31、V WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PIR0208,0202 18E4:0112 BB0402 MOV BX,0204 18E4:0115 E80200 CALL 011A 18E4:0118 CD20 INT 20 如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。v第10章 汇编语言程序设计上机指导第36 页/共41 页(2)对指定范围内的存储单元进行反汇编,格式为:-Urange 例如:-U100 10C 18E4:0100 C70604023801 MOV WORD PTR 0204,013

32、8 18E4:0106 C70606020002 MOV WORD PTR 0206,0200 18E4:010C C70608020202 MOV WORD PTR 0208,0202 或-U100 112 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PTR0208,0202 可见这两种格式是等效的。v第10章 汇编语言程序设计上机指导第37 页/共41 页17输入命令I(Input)。其格式为

33、:-I port address(port address为端口号)其功能是从指定的端口输入一个字节并显示出来。例如:-I 2F8 FF 它表示从02F8H端口读出的内容值为0FFH。v第10章 汇编语言程序设计上机指导第38 页/共41 页18输出命令O(Output)。其格式为:-O port address byte(port address为端口号)其功能是向指定的端口输出一个字节。例如:-O 2F9 B7 它表示将字节值0B7H输出到端口2F9H中。19退出DEBUG命令Q(Quit),其格式为:-Q 它退出DEBUG,返回操作系统。本命令并无存盘功能,如需存盘应先使用W命令。返回本章首页v第10章 汇编语言程序设计上机指导第39 页/共41 页 汇编语言程序设计是一门实践性很强的课程。编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。建立程序、调试程序需要一些应用程序的帮助。本章主要讲述了一些与上机操作有关的应用程序,如MASM、LINK、DEBUG、PWB等。对于一个掌握汇编语言程序设计的人来说,应熟练掌握以上知识。本章小结返回本章首页v第10章 汇编语言程序设计上机指导第40 页/共41 页感谢您的观看!第41 页/共41 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁