汇编指导书(精品).doc_第1页
汇编指导书(精品).doc_第2页
汇编指导书(精品).doc_第3页
汇编指导书(精品).doc_第4页
汇编指导书(精品).doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

汇编指导书(精品) 第一部分第一部分预备知识 一、汇编语言程序设计的上机过程 一、汇编语言程序设计的上机过程开发8086/8088汇编语言源程序的过程如下:图1.1上机过程及生成的文件 1、源程序 1、源程序为了将源程序送入计算机并建立一个源程序名为*.ASM的源文件,可以使用任何流行的字处理程序或能ASCII文字符号的程序。 例如调用DOS下的全屏幕程序EDIT或Windows下的记事本,建立和修改源程序,生成扩展名为.ASM的文件。 在Windows系统中,用鼠标点击开始菜单,指向程序附件MS DOS方式(Windows XP中为“命令提示符”),在MS DOS提示符下键入EDIT,启动程序。 例如C:EDIT MYFILE.ASM通过以上操作,建立了一个名为MYFILE.ASM的汇编语言源程序。 汇编语言源程序的扩展名必须为.ASM;若在以后的几个步骤中发现源程序有错,还要回到程序中加以修改,并重新存盘。 2、将源程序文件汇编成目标程序文件 2、将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有检查源程序中的语法错误,并给出错误信息。 若源程序经汇编后没有错误,产生目标程序文件。 即将用汇编语言编制的源程序转换为机器代码的目标程序的文件(扩展名为.OBJ),并可给出列表文件(.LST)和交叉索引文件(.CRF)。 若程序中使用了宏指令,则汇编程序将展开宏指令。 myfile.asm程序程序汇编程序汇编程序连接程序连接程序myfile.crfotherfiles.objmyfile.lst myfile.objmyfile.mapmyfile.exe在DOS提示符下,键入MASM命令行,命令行的格式为MASM源文件名,目标文件名,列表文件名,交叉索引文件名;注命令行中的方括号内为可选项。 例设有文件名为TRY.ASM的汇编语言源文件,则调用MASM进行汇编的过程为CMASM TRY.ASMMicrosoft(R)Macro AssemblerVersion5.00Copyright(C)Microsoft Crop19811985,1987,All rightsreserved.Object filenameTRY.OBJ:TRYSource listingNUL.LST:TRYCrossreferenceNUL.CRF:TRY0Warning Errors0Severe Errors其中Object filename为目标文件名,这是汇编的主要目的,该文件是我们需要的。 若采用方括号内的默认文件名,直接按回车即可;也可以重新输入一个目标文件名。 Source listing为要求输入的列表文件名,系统默认不建立列表文件。 所以,当不要求产生.LIS文件时,可用回车直接回答,表示不建立列表文件;若要建立列表文件,也可在冒号“”后,输入一个列表文件名。 Crossreference为要求输入的索引文件名。 回答方法类似于列表文件名的情况。 命令行中的分号“;”作为命令行的终止符,未输入部分,将采用MASM的缺省设定值。 注MASM的缺省设定值为生成目标文件且与源文件名相同,不生成列表文件和交叉索引文件。 例如CMASM TRY;仅生成TRY.OBJ文件,且MASM不再询问是否生成列表文件和交叉索引文件。 CMASM TRY,TRY,TRY,TRY三个文件全生成如果汇编过程中发现源程序有语法错误,则列出有错误的语句和错误信息。 汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)。 警告错误指出汇编程序认为的一般性错误;严重错误指出汇编程序认为已经使汇编程序无法进行正确汇编的错误,并给出错误的个数和错误信息。 如果程序有错,则应重新调用程序修改错误,并重新汇编直到汇编正确通过为止。 3、用连接程序LINK产生可执行的EXE文件 3、用连接程序LINK产生可执行的EXE文件经汇编后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(.EXE文件)。 LINK连接程序可以将汇编程序或高级语言编译程序生成的一个或多个.OBJ文件连接成一个可执行文件和一个内存映象文件;还可以在汇编系统和各种高级语言编译系统提供的库文件(.LIB)中检索目标块引用的标准库函数,并与目标模块组合在一起。 命令行的格式为LINK目标文件名表,可执行程序文件名,映象文件名,库文件名表;命令行中的方括号内为可选项。 “目标文件名表”可以是一个目标文件,也可以是多个目标文件,若是多个目标文件,文件名之间用“+”号连接。 “可执行程序文件名”是可选项,若输入了可执行文件名,则以输入的文件名为可执行程序的文件名,若未输入可执行程序文件名,则以第一个目标文件名的基本名为可执行程序文件的基本名,扩展名为.EXE。 “映象文件名”是可选项,若需要生成映象文件时,就键入文件名字。 “库文件名表”是可选项,用户应根据生成目标文件所用的程序设计语言编译系统确定要用的库文件并键入库文件名,若用一个以上的库文件,则库文件名之间用“+”号连接。 命令行中的分号“;”作为命令行的终止符,未输入部分,将采用LINK的缺省设定值。 例如CLINK TRYMicrosoft(R)Overlay LinkerVersion3.60Copyright(C)Microsoft Crop1983-1987.All rightsreserved.Run FileTRY.EXE:TRYList FileNUL.MAP:TRYLibraries.LIB:LINK:warning L4021:no stacksegment其中,Run File是生成的可执行文件的文件名(.EXE)。 List File是生成MAP LIST(清单列表)文件的文件名。 如有省略,则不生成MAP LIST文件。 MAP LIST文件可用TYPE命令显示出来。 注上例表示生成TRY.EXE和TRY.MAP文件,程序运行时没有用到库文件。 CLINK TRY;仅生成TRY.EXE文件 4、利用DEBUG调试程序对可执行文件进行调试(扩展名为.EXE或.的可执行文件) 4、利用DEBUG调试程序对可执行文件进行调试(扩展名为.EXE或.的可执行文件)CDEBUG TRY.EXE注在汇编过程中,只能指出程序中的语法错误,至于程序的算法或编制程序中的其他错误应该在调试时解决。 5、在DOS下运行可执行的文件 5、在DOS下运行可执行的文件对汇编连接后生成的.EXE文件,DOS把它当成外部命令对持,在DOS提示符下,可以直接键入.EXE文件的文件名,无须键入扩展名,然后按回车键,.EXE文件将被执行。 CTRYC然而通常一个较复杂、较长的汇编语言源程序,期望一点错误也没有,一次运行通过的可能性是很小的,这样就需要调用DOS支持下的DEBUG程序调试目标程序。 在DEBUG的管理下,可以单步执行程序,可以设置断点,出可以显示和修改CPU内部寄存器的内容等。 这样就便于寻找程序中的错误。 在发现了错误以后,通常还要重复上述的、连接和调试程序的全过程,直至程序运行正确为止。 二、调试程序DEBUG的使用方法 二、调试程序DEBUG的使用方法 1、 1、DEBUG简介DEBUG简介调试程序DEBUG.也称纠错程序。 它提供了对可执行程序(.EXE和.)或二进制文件的控制和检测手段,使用户能利用DEBUG提供的命令监视和控制被调试程序的执行过程,跟踪程序的踪迹,了解程序中每条指令执行完毕后各个寄存器的内容,以便检查和修改可执行程序;也可用于装入、显示和修改某一文件。 2、启动DEBUG的方法启动DEBUG的方法启动DEBUG可使用下述两种方法之一 2、直接启动DEBUG程序在DOS提示符下直接键入,如CDEBUGDEBUG即被调入内存并启动运行。 此时,屏幕上会出现DEBUG的提示符“-”,等待键入DEBUG命令。 启动DEBUG程序的同时装入被调试文件命令格式如下CDEBUGd:pathfilename.extd:path是被调试文件所在盘符及其路径,filename是被调试文件的文件名,.ext是被调试文件的扩展名。 DEBUG即被调入内存并启动运行,然后将指定的文件调入内存,并显示DEBUG的提示符“-”,等待键入DEBUG命令。 3、DEBUG的常用命令DEBUG的常用命令DEBUG命令都是单字母命令,除Q(退出DEBUG)命令外,都带有一个或多个参数, 3、参数之间用空格分隔。 键入命令字母和参数后,按回车键命令才开始执行,如果键入命令或参数不合法,则会在命令行的下一行的错误位置处显示“Error”信息,表示该命令出错。 DEBUG下的数据均是十六进制数,且不以H结尾;DEBUG命令中使用的地址,有以下几种形式段寄存器名和偏移量,如DS0010段地址和偏移量,如02210110仅有偏移量(段地址取缺省值),如0015用单引号扩起字符串,如ABCD下面介绍DEBUG的主要命令显示内存单元内容的命令D显示内存单元内容的命令D格式1:-D地址功能从指定地址开始,显示128个字节单元的内容。 格式2:-D地址范围功能将显示指定地址范围内的内存单元的内容。 说明若地址或地址范围中不指定段地址,则以DS为缺省值,若不指定地址或地址范围,从前一次显示的最后一个单元的下一个单元开始的128个字节的内容开始显示。 显示格式为段地址偏移量16个字节的内容各单元对应的ASCII码字符(不可见字符用.表示)2.修改内存单元内容的命令E2.修改内存单元内容的命令E格式1:E地址内容表功能是用给定的内容表去代替所指定的内存单元的内容。 例如:-E DS:010041OPEN41该命令执行后,将用列表中的6个字符填入从DS:0100到DS:0105的6个存储单元中。 格式2:E地址功能连续地逐个修改内存单元的内容。 当屏幕上显示指定单元的地址和内容之后,可采取下列办法:若指定单元的内容需要修改,则将新的内容的十六进制数输入,再按空格键,修改便告完成,然后显示下一个存储单元的地址及内容,若需要修改,可进行同样的操作。 若某一个单元的内容不需要修改,而操作又要进行下去,则可直接按空格键。 若需要显示前一个单元的地址和内容,则输入连接号-;若要修改,则输入新的内容,再按-键,本次修改完成;若显示前一个单元的地址和内容仍要修改,则可进行同样的操作;若显示的内容不需要修改,则可直接按-键,使该操作由高地址向低地址单元连续不断地进行。 按键,结束E命令 3、显示和修改寄存器内容的命令R 3、显示和修改寄存器内容的命令R格式1:R功能显示所有寄存器的内容及下一条要执行的指令。 格式2:R寄存器名功能显示指定寄存器的内容,并允许用户修改。 若不修改其内容,可按键;若需要修改其内容,可以输入1-4个十六进制数,再按键。 格式3:RF功能显示和修改标志位状态。 当系统给出标志位状态后,可采取下列办法:若不需要修改任一标志位,可按键。 若需要修改一个或多个标志位,可输入其相反的值。 各标志位之间可以无空格且与顺序无关,修改后按键。 由于标志位状态显示时,是用下列特殊符号表示的,因而修改时,只要输入规定的符号即可。 下面是标志名和状态符号的对照表:标志名置位符号复位符号溢出标志OF(是/否)OV NV方向标志DF(减/增)DN UP中断标志IF(允许/禁止)EI DI符号标志SF(负/正)NG PL零标志ZF(是/否)ZR NZ辅助进位标志AF(是/否)AC NA奇偶校验标志PF(偶/奇)PE PO进位标志CF(是/否)CY NC例:输入RF命令,系统可能作出如下响应:OV DNEI NGZR ACPE CY-若现在要修改奇偶、零、中断和溢出标志位,可在光标处输入:PO NZDI NV例-RAX03F5;AX的内容为03F5;系统显示“”,并等待键入信息,若欲修改AX的内容则键入新值,否则按回车键只有追踪标志TF,不能用指令直接修改。 4.运行程序命令G4.运行程序命令G格式:G=地址地址地址功能执行被调试的程序。 说明第一个参数=地址规定了程序执行的起始地址,以CS内容作段地址,等号后面的地址只需给出偏移地址。 此时,命令G与地址之间的等号不能省略。 如果在G命令执行前,已经正确设置了CS和IP的值,也可以直接用G命令,从指定的CSIP地址执行程序。 如-G格式中后面给出的地址是指断点地址,最多可设置10个断点。 当程序执行到一个断点时,就停下来,显示CPU各寄存器的内容和标志位的状态,以及下一条待执行的指令,被调试程序的所有断点全部被取消,并返回DEBUG。 地址参数所指的单元,必须包含有有效的8086/8088指令的第一个字节,否则将产生不可预料的结果。 若断点地址只包括地址偏移量,则G命令认为其段地址隐含在段寄存器CS中。 例-GxxF;从当前CSIP指出的指令执行,设置了两个断点-G=100xxF;从CS100指出的指令执行,设置了两个断点-G=0B49100xxF;从0B49100处开始执行,设置了两个断点5.追踪命令T5.追踪命令T功能执行一条或多条指令,然后停止并显示执行每条指令后各个寄存器的值。 格式1:T功能执行CSIP指出的一条指令。 格式2T VAL功能执行CSIP指出的VAL条指令。 说明VAL为一个数值,它指出了要执行的指令条数。 格式3:T=地址功能执行地址指出的一条指令,若地址未指出段地址,以CS为缺省值。 格式4T=地址VAL功能执行地址指出的VAL条指令例-T5;执行CSIP指出的连续5条指令-T=105;执行CS105指出一条指令-T=0B491055;执行0B49105开始的连续5条指令T命令能跟踪进入CALL指令、INT n指令或带重复前缀的串操作指令,并且能跟踪LOOP指令的每一次循环,若不想观察相应过程的详细执行过程,可以用P命令。 6、执行过程命令P 6、执行过程命令P功能执行一条指令或一个过程(子程序),然后显示各寄存器的状态。 说明该命令用于调试程序时,执行一条指令或一个过程(子程序)。 它与跟踪命令T的作用类似,T命令是跟踪一条或多条指令,而P命令是执行一条指令(INT n指令、LOOP循环指令或带重复前缀的串操作指令)或一个完整的过程(子程序)。 P命令在执行这些指令后将停在这些指令的下一条指令上,不会由于过程调用或软中断调用而跟踪进入被调用程序,即一次执行完这些指令或一次执行完重复的串操作指令。 7.汇编命令A7.汇编命令A若在调试目标程序的过程中,要求改写或增添一段目标程序,或者进行简单的编程,则可以用A命令直接在DEBUG下实现。 格式:A地址功能从指定地址开始,将用户输入的汇编语言语句立即汇编成机器代码,连续存放在内存单元中。 说明命令中的“地址”为可选项,若不输入,则以CSIP的当前值为当前地址。 键入此命令后,将在下一行显示地址,并等待输入汇编语句。 每一条语句输入完后,则在下一行显示下一指令的地址,并再等待输入汇编语句,在程序输入完毕后,最后一行不输入内容,直接按回车键,即可返回DEBUG提示符,还可用反汇编命令U对刚输入的内容进行反汇编,以验证输入的程序是否正确。 若输入语句有错误,DEBUG将显示Error并重新显示现行的汇编地址,等待新的输入。 使用A命令应遵守以下规则:键入的汇编语句中的内存单元地址、转移的目标地址或调用的子程序入口地址,都不能用符号表示,必须用十六进制数表示;当用十六进制数表示存储单元的地址时,用方括号将地址值括起来。 段超越助记符为CS:、DS:、ES:和SS:。 远调用时的返回指令助记符用RETF。 当DEBUG不能确定某些操作数涉及的是字类型存储单元还是字节类型的存储单元时,在这种情况下,必须用前缀WORD PTR或BYTE PTR来加以说明。 例如:NEG BYTEPTR128DEC WORDPTRSI 8、反汇编命令U 8、反汇编命令U功能将机器指令翻译成符号形式的汇编语言指令,同时显示地址、机器码及汇编语言语句。 格式1:U格式2:U地址格式3U范围说明格式1,将当前CSIP指出的连续16(或32)个字节反汇编为汇编语句,若连续使用则将前一次反汇编的最后一条指令的下一个单元开始的连续16(或32)个字节反汇编为汇编语句并显示出来。 说明反汇编字节数取决于系统显示格式,系统为40列显示格式时,反汇编为16个字节,为80列显示格式时,反汇编为32个字节。 格式2,将地址指出的连续16(或32)个字节反汇编为汇编语句并显示出来。 若地址中未指定段地址,则以CS为缺省值。 格式3,将格式中指定范围内的机器码反汇编为汇编语句并显示出来。 若范围中未指定段地址,则以CS为缺省值。 例将CSIP指出的16(或32)个字节的机器码反汇编为汇编语句-U将0216200开始的16(或32)个字节的机器码反汇编为汇编语句-U0216200将0216200至205单元的机器码反汇编为汇编语句-U0216xx05 9、填充命令F 9、填充命令F格式F范围单元内容表功能将单元内容表中的内容写入范围指出的存储区。 说明若单元内容表中的数据个数少于范围指出的存储区的内存单元个数,则将单元内容表中的数据重复写入内存,直到范围指出范围内的单元写满。 若单元内容表中的数据个数多于范围指出的存储区的内存单元个数,则多余部分无效。 例用31H,32H,33H,34H,35H填满DS100开始的16个单元。 -F100L103132333435或-F100L1012345或F10010F12345用D命令检查F命令执行的结果-D100L10或-D10010F0B3801003132333435313233 3435313233343531123451234512345110、退出DEBUG命令Q 10、退出DEBUG命令Q格式:Q格式:Q功能该命令退出DEBUG程序并返回DOS。 三、常用DOS命令 三、常用DOS命令 (1)查看目录命令,它列出指定盘上的文件目录,如CDIR D:或CDIR D:/W它们将列出D盘上全部文件。 (2)显示命令TYPE,它将磁盘上所指(ASCII码)文件的内容显示在屏幕上或在打印机上输出(若打印机已联机)。 如CTYPE TEST.ASM此命令将当前目录下的文件TEST.ASM的内容显示出来。 (3)拷贝命令COPY,它把一个或多个文件拷贝成副本,如CCOPY TEST1.ASM A此命令将把C盘的文件TEST1.ASM用同名复制到A盘上。 CCOPY TEST1.ASM+TEST2.ASM此命令将把C盘上的TEST2.ASM文件连接到TEST1.ASM之后。 (4)改名命令REN或RENAME,如CREN A1.EXE A2.EXE或CRENAME A1.EXE A2.EXE此命令将把C盘上文件A1.EXE改名为A2.EXE。 (5)删除命令ERASE或DEL,它将从指定的驱动器上删除一个或多个文件。 如CREASE AEXER1.ASM或CDEL AEXER1.ASM此命令将删除A盘上的文件EXER1.ASM。 四、常用目录操作命令 四、常用目录操作命令 (1)建立子目录命令MD或MKDIR,格式为CMD子目录名或CMKDIR子目录名例如CMD C:TEMP则在硬盘C的根目录下建立了一个子目录TEMP。 又如CMD C:TEMPWANG则在子目录TEMP下建立了一个名为WANG的子目录。 (2)删除子目录命令RD或RMDR,格式为CRD子目录名或CRMDIR子目录名例如CRD C:ETMPWANG则把子目录WANG删除,条件是子目录WANG是空的,且WANG不能是当前目录。 (3)改变当前目录命令CD或CHDIR,格式为CCD目录名或CCHDIR子目录名将目录名对应的子目录变为当前目录。 (4)显示目录结构命令TREE,格式为CTREE屏幕上将显示C盘的整个目录结构。 (5)退出子目录,格式为CCD.将退出当前子目录,退到上一层目录下。 第二部分第二部分汇编语言程序设计实验汇编语言程序设计实验实验一汇编语言上机的基本操作实验实验一汇编语言上机的基本操作实验 一、实验目的 1、熟悉使用MSDOS的常用命令; 2、熟悉在计算机上、汇编、连接、调试和运行汇编语言程序的过程。 二、实验要求 1、初步学会建立源程序文件; 2、掌握用MASM将汇编语言源程序生成为目标程序的方法; 3、掌握用LINK将目标程序连接为可执行程序的方法; 4、初步掌握DEBUG中的U、D、G、E、Q命令。 三、实验内容及步骤例2.1、汇编、连接和执行下列程序。 操作步骤如下 1、汇编语言源程序。 在Windows环境下可以使用“EDIT”来对汇编语言源程序进行。 用EDIT汇编语言源程序用鼠标点击开始菜单,指向程序附件MS DOS方式,在MS DOS提示符下键入EDIT,启动程序。 即CEDIT在EDIT状态下输入2.1所示的汇编语言源程序,待程序输入完后,用鼠标单击File菜单下Save命令保存当前程序。 当前程序取名为EXAM21.ASM。 程序清单如下;*EXAM21.ASM*DSEG SEGMENTDATA1DB35H DATA2DB29H DSEG ENDS CSEG SEGMENT ASSUME CSCSEG,DSDSEG STARTMOVAX,DSEG MOV DS,AX MOV AL,DATA1ADD AL,DATA2PUSH AX MOV CL,4SHR AL,CL ADD AL,30H CMP AL,39H JBEOK1ADD AL,07H OK1MOV DL,AL MOV AH,2INT21H POP AX ANDAL,0FH ADD AL,30H CMP AL,39H JBEOK2ADD AL,07H OK2MOV DL,AL MOV AH,2INT21H MOV AH,4CH INT21H CSEGENDS ENDSTART待程序输入完后,用鼠标单击文件菜单下保存命令保存当前程序。 在对汇编语言源程序文件进行保存时必须给其取一个文件名字,且该文件的扩展名必须为“.ASM”,否则MASM不对其进行宏汇编操作。 2、用宏汇编程序MASM对例2.1进行汇编。 操作如下CMASM EXAM21;屏幕显示Microsoft(R)Macro AssemblerVersion5.00Copyright(C)Microsoft Crop1981-1985,1987,All rightsreserved.EXAM21.ASM (17)error Axx:Symbol notdefined:OK1EXAM21.ASM (19)error A2105:Expected:instruction ordirective51744+287360Bytes symbolspace free0Warning Errors2Severe ErrorsC源程序输入有语法错误,MASM在将源程序宏汇编后,会将出错的语句的行号及错误类型显示出来,并在最后提示警告性错误和严重性错误的个数。 本例中有两个严重错误,语句行号分别为 17、19。 这时重新启动“EDIT”返回到状态,找出程序中有错误的语句行,修改并存盘之后重新对其进行宏汇编。 本例中需修改源程序中第 17、19行语句中的错误。 第17行语句并未出错,仅因OK1是指令语句标号未加“”,将第19行语句的标号OK1后面加上一个冒号“”即可。 再次对汇编语言源程序进行宏汇编,直到没有错误提示为止。 屏幕显示Microsoft(R)Macro AssemblerVersion5.00Copyright(C)Microsoft Crop1981-1985,1987,All rightsreserved.51734+328810Bytes symbolspace free0Warning Errors0Severe ErrorsC当汇编通过后,再进行下一步操作。 3、用连接程序LINK对汇编后生成的EXAM21.OBJ文件进行连接,生成EXAM21.EXE文件。 操作如下CLINK EXAM21;此时屏幕显示如下Microsoft(R)Overlay LinkerVersion3.60Copyright(C)Microsoft Corp1983-1987.All rightsreserved.LINK:warning L4021:no stacksegment C通常连接过程不会出现错误,但是,如果程序中没有设置堆栈段,LINK会提示警告,此无堆栈段的警告可以忽略,不会影响程序的执行。 4、执行EXAM21.EXE可以通过下述两种方法执行.EXE文件。 在DOS提示符下直接键入可执行程序(.EXE)的文件名,不用输入扩展名(.EXE),本例键入EXAM21即可。 这时就会在屏幕上看到程序的执行结果,即DATA1和DATA2两个数据相加的结果。 CEXAM215E(运算结果)C在DEBUG环境下,执行EXAM21.EXE,操作如下CDEBUG EXAM21.EXE-U020(反汇编)0B49:0000B8480B MOVAX,0B480B49:00038ED8MOV DS,AX0B49:0005A00000MOV AL,00000B49:000802060100ADD AL,00010B49:000C50PUSH AX0B49:000D B104MOV CL,040B49:000F D2E8SHR AL,CL0B49:00110430ADD AL,300B49:00133C39CMP AL,390B49:00157602JBE00190B49:00170407ADD AL,070B49:00198AD0MOV DL,AL0B49:001B B402MOV AH,020B49:001D CD21INT210B49:001F58POPAX0B49:0020240F ANDAL,0F-U2240(反汇编)0B49:00220430ADD AL,300B49:00243C39CMP AL,390B49:00267602JBE002A0B49:00280407ADD AL,070B49:002A8AD0MOV DL,AL0B49:002C B402MOV AH,020B49:002E CD21INT210B49:0030B44C MOV AH,4C0B49:0032CD21INT210B49:003440INC AX0B49:00350422ADD AL,220B49:003721DA ANDDX,BX0B49:003940INC AX0B49:003A21DA ANDDX,BX0B49:003C2F DAS0B49:003D B8004C MOVAX,4C000B49:0040CD21INT21-D0B48:09(观察原始数据)0B48:0000352900000000000000005-G305E(运算结果)-Q(退出)C 四、思考与练习在DEBUG环境下调试的程序属于那一种文件?第一条可执行指令的IP等于多少?在DEBUG环境下显示的程序和数字是什么形式?标号又是什么形式?修改实验举例源程序中DATA1和DATA2中的数据,重复上述操作过程。 用DEBUG中的E命令修改原始数据,用G命令执行程序。 五、实验报告按照操作顺序写出上机操作的步骤;写出用DEBUG中的E命令修改内存单元内容的两种方法;总结实验过程中遇到的问题及解决方法。 实验二调试程序DEBUG实验实验二调试程序DEBUG实验 一、实验目的 1、熟练掌握DEBUG的使用方法; 2、能够编写简单的汇编语言程序并上机调试。 二、实验要求 1、熟练掌握DEBUG中的U、D、P、G、命令; 2、掌握在DEBUG中如何找到数据段段基址的方法; 3、掌握单步跟踪程序执行的方法; 4、初步掌握键盘输入字符的系统调用使用方法。 三、实验内容及步骤例2.2从键盘上接收两个一位十六进制数,求其和,并以十进制形式显示出来。 下述程序,并以EXAM22.ASM为文件名存盘。 CEDIT EXAM22.ASM程序清单如下;*EXAM22.ASM*DSEG SEGMENTMESS DBPlease input two number:,0ah,0dh,$RESULT DB?DSEG ENDS CSEG SEGMENT ASSUME CSCSEG,DSDSEG STARTMOVAX,DSEG MOVDS,AX LEA DX,MESS;显示提示信息MOV AH,09H INT21H MOV AH,01H;读入第一个十进制数字INT21H SUB AL,30H;转换成二进制数MOV BL,AL;保存到BL中MOV AH,01H;读入第二个十进制数字INT21H SUB AL,30H;转换成二进制数XCHG AL,BL;第一个十进制数字与第二个交换MOV CL,10MUL CL;第一个十进制数字乘以10MOV BH,0ADD AX,BX;AL*10+BL MOVRESULT,AL;保存结果MOV AH,4CH INT21H CSEGENDS ENDSTART 2、用MASM对EXAM22.ASM进行宏汇编,生成EXAM22.OBJ文件。 CMASM EXAM22;屏幕显示Microsoft(R)Macro AssemblerVersion5.00Copyright(C)Microsoft Crop1981-1985,1987,All rightsreserved.51684+156620Bytes symbolspace free0Warning Errors0Severe ErrorsC当汇编通过后,在进行下一步操作。 3、用LINK连接EXAM22.OBJ,生成EXAM22.EXE文件。 操作如下CLINK EXAM22;此时屏幕显示如下Microsoft(R)Overlay LinkerVersion3.60Copyright(C)Microsoft Corp1983-1987.All rightsreserved.LINK:warning L4021:no stacksegment C 4、用DEBUG调试EXAM22.EXE文件,操作如下CDEBUG EXAM22.EXE-U02A(反汇编)0B49:0000B8480B MOVAX,0B480B49:00038ED8MOVDS,AX0B49:00058D160000LEA DX,00000B49:0009B409MOV AH,090B49:000B CD21INT210B49:000D B401MOV AH,010B49:000F CD21INT210B49:00112C30SUB AL,300B49:00138AD8MOV BL,AL0B49:0015B401MOV AH,010B49:0017CD21INT210B49:00192C30SUB AL,300B49:001B86C3XCHG AL,BL0B49:001D B10A MOVCL,0A0B49:001F F6E1MUL CL0B49:0021B700MOV BH,000B49:002303C3ADD AX,BX0B49:0025A20700MOV001B,AL0B49:0028B44C MOV AH,4C0B49:002A CD21INT21-G11(输入第一个十进制数字)Please inputtwo number:2AX=0132BX=0000CX=003C DX=0000SP=0000BP=0000SI=0000DI=0000DS=0B48ES=0B38SS=0B48CS=0B49IP=0011NV UPEI PLNZ NAPO NC0B49:00112C30SUBAL,30-G19(输入第二个十进制数字)5AX=0135BX=0002CX=003C DX=0000SP=0000BP=0000SI=0000DI=0000DS=0B48ES=0B38SS=0B48CS=0B49IP=0019NV UPEI PLNZ NAPO NC0B49:00192C30SUBAL,30-G21(AX的内容为第一个数字的二进制形式乘以10,BX的内容为第二个数字的二进制形式)AX=0014BX=0005CX=000A DX=0000SP=0000BP=0000SI=0000DI=0000DS=0B48ES=0B38SS=0B48CS=0B49IP=0021NV UPEI PLNZ NAPE NC0B49:0021B700MOV BH,00-G28(AX的内容为AL*10+BL,即二进制形式的两位十进制数)AX=0019BX=0005CX=000ADX=0000SP=0000BP=0000SI=0000DI=0000DS=0B48ES=0B38SS=0B48CS=0B49IP=0028NV UPEI PLNZ NAPO NC0B49:0028B44C MOV AH,4C-D020(数据段001B单元的内容为19)0B48:0000506C6561736520696E7075742074776F Please inputtwo0B48:0010206E756D6265723A0A0D241900000000number0B48:0020B8-P=0(或T=0)(用P或T命令单步执行,查看每步的执行结果,体会P和T命令的异同点,显示内容略)-P-Q(退出)C 5、执行EXAM22.EXE CEXAM22Pleaseinputtwo number:25C 四、思考与练习在调试带有中断调用的程序时,用T命令和P命令有什么不同?用E命令和F命令修改数据段中地址为0000001B单元的内容;进入DEBUG,用A命令写入如下程序段,接着用R命令显示状态,并用T命令单条执行,注意在执行命令的同时观察相应寄存器的状态。 MOV AH,3MOV AL,2ADDAL,AH INT3 五、实验报告总结DEBUG中U、D、P、G、命令的功能与用法;总结实验过程中遇到的问题及解决方法。 实验三简单分支结构程序实验实验三简单分支结构程序实验 一、实验目的 1、掌握条件转移指令的使用方法; 2、掌握指令对标志寄存器中各标志位的影响情况; 3、掌握标志位和转移指令之间的关系; 4、初步掌握利用设置断点调试程序的方法。 二、实验要求 1、熟练掌握DEBUG中的G命令; 2、在DEBUG下执行程序,利用跟踪命令检查指令对标志位的影响情况; 3、掌握对INT指令的跟踪方法。 三、实验题目修改实验举例中的程序,使之显示小于平均值的数据。 从键盘上接收三个一位十进制数,选出其中最小值显示出来。 四、实验报告总结DEBUG中的P、G、T命令的功能;写出程序清单,并记录执行结果。 五、实验举例例2.3从键盘上接收三个一位十进制数,选出其中大于平均值的数据显示出来。 1、下述源程序,并以EXAM23.ASM为文件名存盘。 ;*EXAM23*CSEG SEGMENTASSUME CSCSEGSTARTXOR BX,BX;BX清零MOVAH,01INT21H MOVCL,AL;第一个数据放入CL SUBAL,30H ADDBL,AL;求和MOVAH,01INT21H MOVCH,AL;第二个数据放入CH SUBAL,30H ADDBL,AL MOVAH,01INT21H MOVDH,AL;第三个数据放入DH SUBAL,30H XCHGAL,BL ADDAL,BL;累加求和XOR AH,AH MOVBH,3DIV BH;求平均值ADDAL,30H CMP AL,CL;与第一个数比较JAE NEXT1MOV DL,CL;第一个数大于平均值MOVAH,02;显示第一个数INT21H NEXT1CMPAL,CH;与第二个数比较JAE NEXT2MOV DL,CH;显示第二个数MOVAH,02INT21H NEXT2CMPAL,DH;与第三个数比较JAE DONEMOV DL,DH MOVAH,02;显示第三个数INT21H DONEMOVAH,4CH INT21H CSEGENDS ENDSTART 2、用MASM对EXAM23.ASM进行宏汇编,生成EXAM23.OBJ文件。 CMASM EXAM23;Microsoft(R)Macro AssemblerVersion5.00Copyright(C)Microsoft Crop1981-1985,1987,All rightsreserved.51708+156596Bytes symbolspace free0Warning Errors0Severe ErrorsC 3、用LINK对EXAM23.OBJ文件进行连接,生成EXAM23.EXE文件。 CLINK EXAM23;Microsoft(R)Overlay LinkerVersion3.60Copyright(C)Microsoft Corp1983-1987.All rightsreserved.LINK:warning L4021:no stacksegment C

温馨提示

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

评论

0/150

提交评论