第3章+汇编语言程序设计.ppt_第1页
第3章+汇编语言程序设计.ppt_第2页
第3章+汇编语言程序设计.ppt_第3页
第3章+汇编语言程序设计.ppt_第4页
第3章+汇编语言程序设计.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

6/9/2020,1,第3章汇编语言程序设计,本章主要内容:1、汇编语言的基本元素2、伪指令3、汇编程序设计,6/9/2020,2,汇编语言,用汇编语言编写源程序,经过汇编程序和连接程序生成目标程序和执行程序文件名.ASM文件名.OBJ文件名.EXE,汇编语言源程序,汇编,目标程序,连接,执行程序,编辑程序EDIT.EXE,汇编程序MASM.EXE,连接程序LINK.EXE,6/9/2020,3,STACKSEGMENTDB100DUP(?)STACKENDSDATASEGMENTSURDB?DISDB?SQTABDB0,1,4,9,16,25,36,49,64,81DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXLEABX,SQTAB;取平方表基地址MOVAH,0MOVAL,SUR;AL=XADDBX,AX;计算地址偏移MOVAL,BX;取出X的平方值MOVDIS,ALCODEENDSENDBEGIN,6/9/2020,4,汇编语言的语句格式,汇编语言的语句有指令语句、伪指令和宏指令。指令:在程序运行期间由计算机来执行,汇编程序汇编后可产生机器指令代码;。伪指令:在汇编程序对源程序汇编期间由汇编程序处理的操作,伪指令主要完成数据定义、分配存储区、指示程序结束等操作。宏指令:是源程序中一段有独立功能的程序代码。,6/9/2020,5,汇编语言的基本元素,汇编语言的语句格式如下:格式:标识符助记符操作数;注释汇编语言源程序中可以用下列字符来表示标识符:字母:AZ,az数字:09专用字符:?_$说明:1、标识符不能以数字打头,名字中用到则必须是第1个字符2、符号常量、标号或变量等都是标识符3、标识符不能和关键词重名。,6/9/2020,6,常量、变量和标号,常量:指在汇编时已经有确定数值的量。l数值常量:二进制、十进制、十六进制和ASCII码字符如:01100101B234D(或234)456Q1234HAB符号常量:用伪指令EQU实现例如:PEQU314伪指令PURGE可用于释放由EQU伪指令定义的符号常量,这样这些常量就可以被重新定义了。EQU伪指令定义的符号在PURGE伪指令解除前,不能重新定义。例:PURGE符号名1,符号名2,符号名N等号赋值伪指令“=”功能与EQU相似,可对已定义的符号名重新定义而无须先释放。如:P=314,6/9/2020,7,常量、变量和标号,变量:是存储器中的数据或数据区地址的符号表示。变量名即是数据的地址或数据区的首地址。标号:是指令地址的符号表示或过程名。过程名是过程入口地址的符号表示。标号经常在转移指令或CALL指令的操作数字段出现,用以表示转向地址。标号的定义:用“:”定义,直接写在指令前。如:NEXT:MOVAL,SI说明:1、标号代表指令的符号地址,在代码段中定义和使用;2、变量是数据存储单元的符号表示,在数据段、附加段和堆栈段中定义。,6/9/2020,8,数据定义伪操作指令,变量的定义(重点)格式:变量名数据定义伪指令表达式数据定义伪指令:DB,DW,DD,DQ,DT表达式:确定了变量的初值,所使的表达式可以是以下几种:(1)数值表达式W1DW-5,1994H(2)ASCII码字符串B1DBAB$(3)地址表达式W2DWB1(4)“?”表示所定义变量无确定初值B2DB?(5)nDUP(表达式)如:DATA1DB20DUP(5)其中n是重复因子,只能取正整数,它表示定义了n个表达式,表达式的类型由数据定义伪指令确定。此处表示定义了20个字节,并全部初始化为5。,6/9/2020,9,数据定义伪操作指令,例1:DATA2DW10DUP(?)表示定义了10个字,但没有初始化。例2:BUFFERDB100DUP(0);表示以BUFFER为首地址的100个字节中存放00H例3:V1DB100DUP(3,5,2DUP(10),35),24,NUM表示V1为首地址的区域中存放了(3,5,10,10,35)100次,和24,NUM,6/9/2020,10,数据定义伪操作指令,例4:S1DBABCDEFS2DWAB,CD,EFS3DDAB,CD这几个变量在存储器中存放情况如下:,注意:定义多于两个以上字符的字符串时,只能使用DB伪指令,不能使用DW和DD等伪指令。,S1,S2,S3,6/9/2020,11,变量的属性,l变量有三种属性:段地址SEG偏移地址OFFSET类型TYPE变量的类型:存取该变量中的数据所需要的字节数例如:用DB定义的变量,其类型为1;用DW定义的变量,其类型为2;用DD定义的变量,其类型为4;依次类推。,6/9/2020,12,标号的属性,l标号也有3种属性:即段地址、偏移地址和标号的类型(NEAR,FAR)。段地址:标号的段起始地址,此值必须在CS中;偏移地址:是16位无符号数,它代表从段起始地址到定义标号的位置之间的字节数。类型:NEAR:段内转移或调用,只需要改变IP值,不需要改变CS值。标号返回值为-1(0FFFFH)FAR:指段间转移和调用。IP和CS都将改变,标号返回值为-2(0FFFEH),6/9/2020,13,汇编语言的运算符,宏汇编允许对常量进行算术、逻辑和关系3种运算,构成的数值表达式在汇编时完成计算。算术运算符:+、*、/、MOD、SHL和SHR如:PIEQU31416/10000逻辑运算符:AND、OR、NOT、XOR如:ANDAL,MASKBANDOFH和逻辑运算指令的区别:由逻辑运算符构成的表达式在汇编时完成计算,而指令在运行时才会执行关系运算符:EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)注:关系运算符比较两个操作数并产生一个逻辑值。如果关系成立,则结果为真(0FFFFH);否则为假(0000H)。,6/9/2020,14,汇编语言的运算符,值返回运算符1$运算符:返回汇编器当前地址计数器的值。如:BLOCKDBReadafterme!NUMEQU$-BLOCK结果NUM的值为字符串的长度14又如:W2DW-5,1994HC1EQU($-W2)/2;C1表示变量W2中元素的个数。2SEG和OFFSET运算符:返回变量或标号的段地址和偏移地址。例如:MOVAX,SEGTABLEMOVBX,OFFSETTABLE(相当于LEABX,TABLE),6/9/2020,15,汇编语言的运算符,3TYPE运算符:用于返回变量和标号的类型例如:MOVAX,TYPETABLE若TABLE为字节变量,则返回值为14LENGTH和SIZE运算符LENGTH:返回分配给该变量的元素的个数;SIZE:返回分配给该变量的字节数。即返回变量的长度LENGTH与类型TYPE之积。说明:这两个运算符只对用DUP定义的变量有意义。例如:TABLEDW100DUP(?)MOVCX,LENGTHTABLE;CX=100MOVDX,SIZETABLE;DX=200,6/9/2020,16,汇编语言的运算符,属性运算符1PTR运算符:忽略变量或标号的当前属性,而给出一个临时的类型或属性。例1:SLOTDW25MOVAL,BYTRPTRSLOT例2:MOVBYTEPTRBX,5或MOVWORDPTRBX,52THIS运算符:可用来建立一个特殊的变量,而不为其分配存储空间。该变量的段地址和偏移地址就是后面一个变量的段和偏移地址,其类型在THIS运算符后面指定。例:F1=THISBYTEF2DW1234HMOVAX,TYPEF1;AX=1MOVBL,F1;BL=34H,6/9/2020,17,汇编语言的段定义,段定义伪指令格式:段名SEGMENT定位类型组合类型类别段名ENDS说明:三个可选项一般情况下可不用。但如果需要用连接程序把本程序与其它程序模块相连接时,就需要使用这些说明。,6/9/2020,18,汇编语言的段定义,定位类型:如何将组合后的段定位到存储器中。PARA:这是隐含的定位方式,段首址的最低4位为0;BYTE:本段可从任何地址开始;WORD:本段要从偶地址开始;PAGE:段首址的低8位为0。组合类型:表明本段和其它段的组合关系(共6种,见P76)类别:必须用单引号括起来,连接时LINK将类别名相同的所有段(它们不一定同段名)存放在连续的存储区域中。典型的类别名有:data,stack,code。删节号:对于数据段、附加段和堆栈段来说,一般是存储单元的定义、分配等伪指令,对于代码段,则是指令及伪指令。,6/9/2020,19,汇编语言的过程定义,过程定义伪指令一个代码段可以由一个或几个过程组成。过程的定义格式形式如下:过程名PROCNEAR或FARRET过程名ENDPNEAR:默认状态,为段内过程FAR:为段际过程,6/9/2020,20,设定段寄存器伪指令ASSUME,几乎所有访问存储器的指令都仅使用偏移地址。而段地址来自某个段寄存器,所以源程序在程序代码段的开始就要对段寄存器与段之间的关系做假定。确定段寄存器与段的关系的伪指令ASSUME格式:ASSUMESEGREGNAME:SEGNAME,例如:assumess:stack,cs:code,ds:data注意:伪指令ASSUME只是指定某个段分配给哪个段寄存器,它并不能把段地址装入到段寄存器中。因此要在程序中用两条MOV指令完成这一操作,但代码段不需要这样做,CS的内容将程序初始化时由系统自动完成。,6/9/2020,21,汇编语言源程序结构,RAM底端DS、ESCSRAM高端,EXE文件:分段结构的可执行文件。EXE文件除了程序、数据外,还包含了一个文件头,叫程序段前缀PSP(programsegmentprefix),占256个字节。PSP的256个字节包含三部分的信息:有被装入程序与操作系统连接时使用的信息,有供装入程序使用的参数,还有供操作系统本身使用的信息。,6/9/2020,22,标准程序前奏,当执行EXE文件时,操作系统像调用子程序一样,把控制权转移给EXE文件,EXE文件执行完之后也应像子程序返回调用程序一样将控制权返回操作系统。EXE文件返回DOS有两种方法:(1)使用4CH功能调用即在EXE文件的最后使用以下指令:MOVAH,4CHINT21H(2)用软中断INT20H,其指令机器码是CD20,6/9/2020,23,标准程序前奏,PSP的头两个字节即为一条INT20H指令,即返回操作系统指令。当程序运行结束时,可以通过把程序流程转移到PSP的这条指令而终止自己的进程。因此需要在程序一开始把PSP的起点地址压入堆栈:PUSHDSXORAX,AXPUSHAX这三条指令称为标准程序前奏。这样当程序执行到最后一条RET指令时,它将从堆栈顶部弹出PSP的起点地址送CS和IP,使得INT20H指令得以执行,从而把控制权交还给操作系统。当不把代码段中的程序写成过程时,这三行语句是不必要的,但若将其写成DOS调用的过程,则必须加上这三条标准程序前奏。,6/9/2020,24,结束用户程序返回DOS的方法,1INT20H2程序转移到程序段前缀PSP的开始处来返回DOS在子程序中应有如下程序段:PUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXRET3用4CH功能调用MOVAH,4CHINT21H,若程序中用到附加段ES,则还应有将附加段首址送ES的指令,6/9/2020,25,ORG伪指令,ORG:伪指令用于指定段内程序或数据代码存放的起始偏移地址,即用语句中表达式的值作为起始偏移地址,此后的程序或数据代码将连续存放,除非遇到另一个新的ORG语句。一般格式为:ORG例如:DATASEGMENTBUFF1DB23,56H,EOFORG2000HBUFF2DBSTRINGDATAENDS,6/9/2020,26,汇编结束伪指令语句END,汇编结束伪指令语句ENDEND伪指令用在源程序的最后,用以表示整个源程序的结束,即告诉汇编程序,汇编工作到此结束。格式:END表达式说明:表达式为程序第一条可执行指令的地址。如果不带表达式,则该程序不能单独执行,只是供其他程序调用的子模块。,6/9/2020,27,汇编语言源程序结构,RAM底端CS,DS,ES,SSIP=0100HSP=0FFFEHRAM高端,COM文件所占存储空间比EXE文件小,不允许超过64K。COM文件不分段,且不允许定义堆栈段,占有的空间所有的过程均应定义为NEAR,其入口点必须是0100H。只能用来编制较小的程序。由于其小而简单,装入速度比EXE文件要快。,64KB,6/9/2020,28,例题详解,某程序中的数据定义如下:DAT1DW?,18DUP(9)DAT2DB90,67,12,176,100,8DAT3DD?,?,15CNT1EQU$-DAT2CNT2EQU$-DAT3问CNT1、CNT2的值以及上述数据定义占用多少字节的内存?,答案:CNT1=18CNT2=12共占用字节:56个字节,6/9/2020,29,例题详解,执行以下程序段后,AX的内容为:ORG0000HTABLEDW12H,34H,56H,$+1018,78H,90HCOUNTEQU3LEABX,TABLEMOVDX,4BXMOVAX,BX+2*COUNTSUBAX,DX,BX=0000HDX=0056HAX=0400HAX=03AAH,注意:$+1018中的1018是十进制数,即十六进制数3FA,6/9/2020,30,例题详解,执行以下程序段后,CL和AX的内容各为:STR1DWABSTR2DB16DUP(?)CNTEQU$-STR1MOVCX,CNTMOVAX,STR1HLT,答案:CL=12HAX=4142H,6/9/2020,31,例题详解,求下列数据段中每个符号或变量所对应的值:DATASEGMENTORG1000HMAXEQU0FFHONEEQUMAXMOD10TWOEQUONE*4SIZEEQU(TWOLT20H)AND10H)+10HBUFDBSIZE*2DUP(?)COUNTEQU$-BUFDATAENDS,MAX=FFHONE=05HTWO=14HSIZE=20HBUF=1000HCOUNT=40H,6/9/2020,32,汇编程序设计,在汇编语言程序中,最常见的结构有:l顺序结构l分支结构l循环结构l子程序结构这几种程序的设计方法是汇编程序设计的基础。,6/9/2020,33,顺序结构程序设计,顺序结构程序设计是没有分支,没有循环的直线运行程序,它的执行顺序和指令的排列顺序完全一致。例1:利用查表法计算平方值。已知09的平方值连续存在以SQTAB开始的存储区域中,求SUR单元内容X的平方值,并放在DIS单元中。假定0X9且为整数。解:(1)了解平方表的存放位置;(2)根据X的值,找到X对应X2在表中位置。,6/9/2020,34,STACKSEGMENTDB100DUP(?)STACKENDSDATASEGMENTSURDB2DISDB?SQTABDB0,1,4,9,16,25,36,49,64,81DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGINPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEABX,SQTAB;取平方表基地址MOVAH,0MOVAL,SUR;AL=XADDBX,AX;计算地址偏移MOVAL,BX;取出X的平方值MOVDIS,ALRETBEGINENDPCODEENDSENDBEGIN,6/9/2020,35,为使程序精练,可采用查表指令XLAT,代码段如下:BEGIN:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXLEABX,SQTABMOVAL,SUR;AL=XXLATSQTABMOVDIS,AL,6/9/2020,36,分支结构程序设计,分支结构:分支程序经常利用改变标志位的指令和转移指令来实现。如采用比较指令CMP和测试指令TEST,产生相应的状态标志,选择适当的条件转移指令,实现不同情况的分支转移。,例实现符号函数。1X0Y=0X=01X0,6/9/2020,37,根据上述要求的程序段为:START:MOVAX,BUFFER;取变量XORAX,AX;产生状态标志JEZERO;X=0则转移,ZERO:MOVBX,0,JMPCONT1,CONT1:,JMPCONT1;转向出口,JNSPLUS;X为正则转移,MOVBX,0FFFFH;BX=1,PLUS:MOVBX,1,6/9/2020,38,循环结构,顺序结构和分支结构程序中的指令,最多只执行一次,若要重复执行某些指令,需用循环结构实现。循环程序由4部分组成:,(1)循环准备:建立地址指针、置计数器、设置些必要的常数,将工作寄存器或工作单元清零等。(2)循环体:完成循环的基本操作;(3)循环的修改:修改的内容一般包括计数器、寄存器和基址和变址寄存器等;(4)循环的控制:修改计数器,控制循环继续或终止。,6/9/2020,39,循环结构,例设内存BUFF开始的单元中依次存放着30个8位无符号字节数,求它们的和并放在SUM单元中。程序如下:MOVSI,OFFSETBUFFMOVCX,30XORAX,AXAGAIN:ADDAL,SIADCAH,0INCSIDECCX;可用LOOPAGAINJNZAGAINMOVSUM,AX,6/9/2020,40,例在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数,现要编写程序将这100个字数据从大到小排序。程序如下:LEADI,BUFFER;取首地址MOVBL,99;须经N-1次排序NEXT0:MOVSI,DI;SI恢复指向首地址MOVCL,BL;每次排序的比较次数NEXT3:MOVAX,SI;当前16位数放在AX中ADDSI,2;SI指向下一个16位数CMPAX,SI;当前数与下一个数比较JNCNEXT5;大于等于则不交换MOVDX,SI;小于则交换MOVSI2,DX;可XCHGSI,AXMOVSI,AX;MOVSI-2,AXNEXT5:DECCL;计算比较次数JNZNEXT3DECBL;每次排序的比较次数减一JNZNEXT0HLT,6/9/2020,41,LEADI,BUFFER;取首地址MOVCOUNT,100;排序元素的个数CLD;地址递增排序NEXT1:MOVBX,1;交换标记DECCOUNT;每次排序的比较次数减1JZEXIT;比较次数为0则结束MOVSI,DI;SI恢复指向首地址MOVCX,COUNT;每次排序的比较次数NEXT2:LODSW;当前数AX,SI下一个数CMPAX,SI;当前数与下一个数比较JNCNEXT3;大于等于则不交换XCHGSI,AX;小于则交换MOVSI2,AX;大数存入上一位置XORBX,BX;有交换则交换标记清零NEXT3:LOOPNEXT2;一次排序是否结束?CMPBX,0;一次排序是否有交换?JENEXT1;有交换则继续EXIT:MOVAX,4C00HINT21H,6/9/2020,42,例题详解,下面是实现8A0BH和D705H两个数相加的程序,请在空白处填写正确的指令:,DATASEGMENTFIRSTDB_,_,0HSECONDDB_,_DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,_MOVSI,0_,答案:0BH8AH05HD7H2CLC0,NEXT:MOVAL,SECONDSIADCFIRSTSI,ALINCSILOOPNEXTMOVAL,0ADCAL,_MOVFIRSTSI,ALMOVAH,4CHINT21HCODEENDSENDSTART,6/9/2020,43,子程序结构,循环程序设计技术解决了同一程序中连续多次有规律重复执行某个或某些程序段的问题。但对于无规律的重复就不能用循环程序实现。更多的情况是在不同的程序中或在同一个程序的不同位置常常要用到功能完全相同的程序段,如数制之间的转换、代码转换、初等函数计算等。对于这样的程序段,为避免编制程序的重复劳动,节省存储空间,往往把它独立出来附加少量额外的指令,将其编制成可供反复调用的公用的独立程序段,并通过适当的方法把它和其它程序段连接起来。,6/9/2020,44,子程序结构,主程序与子程序间的参数传递:(1)寄存器法:传递的参数和出口参数都在约定的寄存器中,当所传递的参数较少时,一般用这种方法。(2)堆栈法:在调用子程序前,入口参数由主程序送入堆栈中,子程序从堆栈中取得这些参数,并将处理结果送到堆栈中,返回主程序后,主程序从堆栈取得结果。(3)参数赋值法:若主程序和子程序在同一代码段时,可把参数存放在主程序调用子程序指令后面的一串单元中。,在参数的传递方法中,寄存器法最简单,堆栈法最节省存储单元,参数赋值法最直观,但它们各有不足,寄存器法不能传递较多的参数,堆栈法和参数赋值法编程较麻烦。经验证明,参数不多时,用寄存器法最适宜;参数较多时用堆栈法或参数赋值法。,6/9/2020,45,子程序结构,主程序和子程序公用寄存器的处理问题子程序不可避免地要使用一些寄存器,因此子程序执行后,某些寄存器的内容会发生变化,如果主程序在这些寄存器中已经存放了有用的数据,则从子程序返回主程序后,主程序的运行势必因原存信息被破坏而出错。解决这个问题的方法是使用这些寄存器之前,将其内容保存起来,使用之后再将其还原。前者称为保护现场,后者称为恢复现场。该工作一般在子程序中完成。如:PUSHAXPUSHBXPOPBXPOPAX,6/9/2020,46,操作系统资源使用,为了方便人们的使用和编程,在计算机内部有很多例行程序可以调用。很多例行程序及功能调用是关于输入、输出的,即通过输入设备(如键盘和磁盘)输入信息,再把输出的结果显示在屏幕、打印机或磁盘上,虽然高级语言也可以处理输入输出工作,但速度慢、级别高。即使是用汇编语言处理输入输出,也可以调用两个层次的例行程序:用户DOSROM,对I/O的程序请求,DOS的I/O调用,ROMBIOS调用,操作外设,6/9/2020,47,操作系统资源使用,IBMPC微机系统为汇编用户提供了两个程序接口,一个是DOS系统功能调用,一个是ROM中的BIOS。系统功能调用和BIOS由一系列的子程序构成,但调用和返回不是使用子程序调用指令CALL和返回指令RET,而是通过软中断INTn和中断返回指令IRET调用和返回。DOS系统功能调用和BIOS的服务子程序,使得程序设计人员不必涉及硬件即可以实现对系统的硬件尤其是I/O的使用与管理。,6/9/2020,48,DOS功能调用,系统功能调用分为字符I/O与磁盘控制功能,文件控制功能,记录和目录操作功能,程序结束、内存分配与其它功能四类。编号亦即调用号从075H。使用系统功能调用的一般过程为:把调用号放入AH中,设置入口参数,然后执行INT21H指令,最后分析处理出口参数。,6/9/2020,49,1键盘输入(1号调用)入口参数:AH=1出口参数:AL=相应字符的ASCII码。形式:MOVAH,1INT21H2字符输出(2号调用)入口参数:DL=显示字符的ASCII码,AH=2出口参数:无形式:MOVAH,02MOVDL,30HINT21H该功能将DL寄存器内容送显示器显示。,DOS功能调用,6/9/2020,50,3控制台输入但无显示(7号调用)入口参数:AH=7出口参数:AL=相应字符的ASCII码。形式:MOVAH,7INT21H该调用与1号调用功能相似,区别仅在输入字符不在显示器上显示。往往用于输入密码等。,DOS功能调用,6/9/2020,51,4字符串输出(9号调用)入口参数:DS:DX=显示缓冲区的字符串首地址,AH=09出口参数:无形式:MOVAH,09MOVDX,OFFSETBUFFINT21H该调用将DS:DX所指缓冲区的字符串显示在屏幕上,要求以$符结尾。,DOS功能调用,6/9/2020,52,5字符串输入(10号调用)入口参数:AH=10,DS:DX键盘接收输入缓冲区首地址出口参数:从键盘接收字符串到内存缓冲区。缓冲区第一个字节存储缓冲区能容纳的字符个数,第二个字节存放实际接收的字节数,从第三字节开始存放从键盘接收的字符。形式:MOVAH,10MOVDX,OFFSETBUFFINT21H,DOS功能调用,6/9/2020,53,6程序结束(4C号调用)入口参数:AH=4CH出口参数:无形式:MOVAX,4C00HINT21H,DOS功能调用,三级PC技术上机考题,请编制程序,其功能是:内存中连续存放着20个ASCII字符,如果是小写字母a-z之间的字符,请将其转换成相应的大写字符;若为其他字符,不作转换。例如:内存中有61H(a),62H(b),31H(1)41H(A),42H(B)结果为41H(A),42H(B),31H,41H(A),42H(B)部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。,EXTRNLOAD:FAR,SAVE:

温馨提示

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

评论

0/150

提交评论