微机原理与接口技术(楼顺天)-第4章综合程序设计示例课件_第1页
微机原理与接口技术(楼顺天)-第4章综合程序设计示例课件_第2页
微机原理与接口技术(楼顺天)-第4章综合程序设计示例课件_第3页
微机原理与接口技术(楼顺天)-第4章综合程序设计示例课件_第4页
微机原理与接口技术(楼顺天)-第4章综合程序设计示例课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

本教案内容第4章

汇编语言程序设计汇编语言程序设计基础源程序的汇编、连接与调试分支程序设计技术循环程序设计技术子程序设计技术综合程序设计示例4.6.4综合程序设计示例本节介绍一些汇编语言设计的综合示例,包括各种题型:选择题、分析题和编程题。例4.16单项选择题1.在伪指令BUFDB20DUP(2,2DUP(8))定义的缓冲区中,数据字0208H的个数有:①20 ②40 ③0 ④192.将DX:AX构成的双字(有符号数)除以2的指令为:①SARAX,1②SHRAX,1RCRDX,1RCRDX,1③SARDX,1④

SARDX,1RORAX,1RCRAX,1

4.6.4综合程序设计示例3.MOVBL,55HAND0F0H指令执行后,(BL)的内容为:①55H②0F0H ③50H ④05H解:答案依次为④④③。例4.17多项选择题1.能使(AX)和CF同时清零的指令有①MOVAX,0 ②SUBAX,AX③CMPAX,AX④XORAX,AX ⑤ANDAX,AX2.已有定义 DATASEGMENTVAR1 DW10DUP(?)DATA ENDS则源操作数为立即寻址的指令有:①MOVAX,DATA ②MOVAX,VAR1③MOVAX,OFFSETVAR1④MOVAX,LENGTHVAR1⑤MOVAX,SIZEVAR14.6.4综合程序设计示例3.使用AL寄存器的指令有:①SAHF ②XALT ③AAA ④MOVSB ⑤STOSB解:1.②④⑤2.①③④⑤ 3.②③⑤例4.18分析下列程序段完成的功能:MOVCX,100LEASI,FIRSTLEADI,SECONDCLDREPMOVSB解:只要搞清楚MOVSB指令的用法,就容易分析出该程序段的功能:从缓冲区FIRST传送100个字节到缓冲区SECOND。4.6.4综合程序设计示例例4.19分析下列程序段:LEADI,STRINGMOVCX,200CLDMOVAL,20HREPZSCASBJNZFOUNDJMPNOT_FOUND问:转移到FOUND的条件。解:只要搞清楚SCASB指令和重复前缀REPZ的用法,就可以分析出该程序段的功能:在200个字节的缓冲区STRING中,如果找到非空格字符(ASCII码为20H)则转到FOUND;如果全是空格,则转到NOT_FOUND。

4.6.4综合程序设计示例例4.20分析下列子程序FUNC1,并回答相应的问题。FUNC1PROCNEARXORCX,CXMOVDX,01MOVCL,XJCXZA20INCDXINCDXDECCXJCXZA20A10:MOVAX,02SHLAX,CL

ADDDX,AXLOOPA104.6.4综合程序设计示例

A20:MOVY,DXRETFUNC1ENDP若该子程序的入口参数为X(0≤X≤10),其输出参数为Y,则:(1)该子程序的功能是Y=f(X)=

;(2)若X=0,则Y=

; 若X=3,则Y=

;若X=5,则Y=

。解:分析题是近年来出现的比较多的考题.对于分析题,应该边分析边画流程草图,特别要注意搞清楚数据缓冲区的结构、指针及其操作过程,这样便于理解程序的功能和思路。4.6.4综合程序设计示例通过分析该子程序,很容易获知,当X=0时,直接转到A20,即Y=1;当X=1时,Y=3;当X=2时,Y=7;当X=3时,Y=15;如此等等,当X=n时,有因此第(1)题为;由分析过程和得到的表达式,第(2)题三个空应依次填1,15,63。例4.21已知N(3<N<100)个8位无符号数已存放在缓存区INX中,其中第一个字节存放个数N,从第二个字节开始存放数据,下列的FUNC2子程序完成对这N个数据按由大到小排序,在划线处填入必要指令,使子程序完整。

4.6.4综合程序设计示例FUNC2PROCNEARLEASI,INXXORCX,CXMOVCL,[SI]DECCXB10:INCSIMOVDI,SIPUSHSI

①MOVAL,[SI]B20:INCSICMPAL,[SI]

4.6.4综合程序设计示例

MOVAL,[SI]MOVDI,SIB30:LOOPB20POPCXPOPSIMOVAH,[SI]MOV[SI],ALMOV[DI],AHLOOPB10

③FUNC2ENDP

4.6.4综合程序设计示例解:指令填空题也是出现较多的考题,它有可能会替代编程题。求解指令填空题时,应该理解题义,紧跟程序思路,从而找出缺少的指令。一般来说,题目中会有一些暗示,例如在子程序中应该确保PUSH和POP数量上的对等;子程序要有RET指令等等。对于本题,第③空显然应该填入RET;而且PUSH与POP并不对等,因此初步分析,第①空应该填入PUSHCX指令。为全面分析程序,需要搞清楚数据缓冲区INX的结构,如图4.9所示,指针SI指向缓冲区INX,并且随着比较操作而增加,4.6.4综合程序设计示例但DI用于指定某个适当的位置,根据LOOP指令的前三条指令的交换操作,SI为缓冲区数据的首地址(第一次循环时),而题目要求将数据由大到小排序,因此,找到的DI位置应该存放着最大值,第②空处的指令应该大于等于时转移到B30的指令,再根据题目给出的是无符号数,所以,第②空应该填入JAEB30指令。程序段完整后,再仔细看一遍,是否能够完成题目给定的任务。4.6.4综合程序设计示例例4.22假设X和X+2单元的内容为双精度数P,Y和Y+2单元的内容为双精度数Q(P,Q均为无符号数,其中X,Y为低位数),下列的子程序FUNC3完成:当2P>Q时,(AX)=1;当2P≤Q时,(AX)=-1,在划线处填入必要指令,使子程序完整。FUNC3PROCNEARMOVDX,X+2MOVAX,XADDAX,AXADCDX,DXJCC1

CMPDX,Y+2

①C20

②C104.6.4综合程序设计示例

CMPAX,Y

③C20C10:MOVAX,1

④C30C20:MOVAX,-1C30:RETFUNC3ENDP解:双精度数占用2个字,低位字在前,高位字在后。分析该子程序,发现这4个空全是有条件转移指令,由于题目给定的数据为无符号数,因此应该采用JA、JB等指令。子程序的前4条指令完成2×P,当2×P有进位时表示超出32位二进制数的范围,这时可以肯定2×P>Q,程序应转向C10。当2×P≤Q时,应转向C20。

4.6.4综合程序设计示例只有当高位字相等时,才需要比较低位字,因此根据以上分析,可以确定各处填入的指令分别为:第①空填入JB;第②空填入JA;第③空填入JBE;第④空填入JMP。例4.23编写子程序COMPT4DIV1,完成4字节(即双字)的无符号数除以1字节。解:设要完成的操作为A=P÷Q,其中Q为一个字节,P由4个字节构成。将P的4个字节从高位到低位分别表示成P4、P3、P2和P1,则这样可以将计算分成下列4个步骤:(1)先计算,其商为结果A的31~24位;4.6.4综合程序设计示例(2)应该特别注意上一步操作的余数(记作R1),它应该与P3构成一个字,因此这时应完成,其商可能是16位,应该加到A的31~16位;(3)与(2)步类似,完成,其商加到A的23~8位;(4)与(2)步类似,完成,其商加到A的15~0位;

子程序COMPT4DIV1的入口参数为:DX:AX(参数P)和CL(参数Q),出口参数为:DX:AX(计算结果,即参数A),采用寄存器参数传递方式,用到的寄存器为:DX和AX。利用汇编语言编写的子程序COMPT4DIV1及其应用示例如下:

4.6综合程序设计示例STACKSEGMENTSTACK'STACK'DW100HDUP(?)TOPLABELWORDSTACKENDSDATASEGMENTCONSTDW42XDATDD987654321YDAT DD? ;166D1BBHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX4.6综合程序设计示例MOVES,AXMOVAX,STACKMOVSS,AXLEASP,TOP MOVCX,CONST MOVAX,WORDPTRXDAT MOVDX,WORDPTRXDAT+2CALLCOMPT4DIV1 MOVWORDPTRYDAT,AX MOVWORDPTRYDAT+2,DX XCHGAX,DX ;显示计算结果 CALLDISPAX XCHGAX,DX CALLDISPAX4.6综合程序设计示例CALLDISPCRMOVAH,4CH;返回DOSMOVAL,0INT21HCOMPT4DIV1PROCNEAR PUSHBX PUSHCX PUSHSI XORCH,CH CMPCX,1 JECOMPTDIV1 MOVSI,CX PUSHAX ;保存低位字 MOVAX,DX4.6综合程序设计示例XORDX,DX XORBX,BX ;结果暂存在BX:CX XORCX,CX PUSHAX ;保存高位字 XORAL,AL ;最高位字节除以Q XCHGAL,AH DIVSI ADDBH,AL MOVAH,DL ;次高位字节除以Q POPDX MOVAL,DL XORDX,DX DIVSI ADDBL,AL4.6综合程序设计示例ADCBH,AH MOVAH,DL ;第三位字节除以Q POPDX ;取出低位字 PUSHDX MOVAL,DH XORDX,DX DIVSI ADDCH,AL ADCBL,AH MOVAH,DL ;最低位字节除以Q POPDX ;取出低位字 MOVAL,DL XORDX,DX DIVSI4.6综合程序设计示例ADDCL,AL ADCCH,AH MOVAX,CX MOVDX,BXCOMPTDIV1: POPSI POPCX POPBXRETCOMPT4DIV1ENDPCODEENDSENDSTART◆当除数Q=1时,A=P,可以直接得到结果,不需要进行复杂的运算。4.6综合程序设计示例例4.24在首址为XDAT的字型数组中,第一个字存放某单位的人数N(N<1000),第二个字存放B(个人所得税起征额),从第三个字开始分别存放该单位N个人的A(本月收入总额,A<300000)。要求编写汇编语言程序实现:根据个人所得税率表和个人所得税计算公式计算个人应纳税和单位应纳税总额,将结果存储在首址为YDAT的字型组中,其中第一个字存放单位人数,第二个字存放单位纳税总额,从第三个字开始分别存放该单位N个人的个人应纳税。个人所得税率如表4.5所示。4.6综合程序设计示例表4.5个人所得税率表级数E(全月应纳税所得额单位:元)C(税率(%))D(速算扣除数单位:元)10<E<500502500<=E<2000102532000<=E<50001512545000<=E<200002037552000<=E<40000251375640000<=E<60000303375760000<=E<80000356375880000<=E<10000040103759E>=10000045153754.6综合程序设计示例个人所得税计算公式为:S(应纳税)=E(全月应纳税总额)×C(税率)-D(速算扣除数)其中,E=A(本月收入总额)-B(个人所得税起征额)。例如,若张三的A=1200元,个人所得税起征额B=1600,由E=A-B<0,得S=0。若李四的A=2600元,个人所得税起征额B=1600,由E=A-B=1000元,查“个人所得税率表”可得C=10%,D=25元,因此李四应纳税为:S=(A-B)×C-D=(2600-1600)×10%-25=75(元)4.6综合程序设计示例解:题目的要求比较复杂,而且有一定的难度。为此,应该先搞清楚缓冲区结构,输入缓冲区XDAT和输出缓冲区YDAT的结构如图4.10所示。在XDAT中,第一个字为某单位的人数N,第二个字表示个人所得税起征额B,从第三个字开始,每两个字存放一位员工的工资A。在YDAT中,第一个字为某单位的人数N,第二、三个字用于存放全单位应交个人所得税的总和,从第四个字开始,每两个字用于存放每位员工应交个人所得税S。在程序设计中,分别采用指针SI和DI来指示。4.6综合程序设计示例为了计算方便,将表4.5中的个人所得税9个等级变换成三个数据表:INCOME(个人所得税界线值,双字型变量)、TAXRATE(税率,字型变量)、DEDUCTION(速算扣除数,字型变量),其结构如图4.11所示。INCOME存放每个等级的上限值,最后一级可以给定一个较大的值,比如300000(由题目限定)。编写子程序INCOMERATE实现个人所得税的计算,其入口参数为DX:AX(工资A)和BX(个人所得税起征额B),出口参数为DX:AX(个人所得税S),采用寄存器参数传递方式。4.6综合程序设计示例图4.11个人所得税界线值、税率和速算扣除数的结构4.6综合程序设计示例在子程序INCOMERATE中,先计算出E=A-B,然后将E与INCOME中的上限值比较,确定出征税的等级,并通过TAXRATE和DEDUCTION找出税率C和速算扣除数D,由S=E×C-D就可以计算出个人所得税。为了方便操作,在子程序INCOMERATE中,通过(BX)+(SI)的值作为INCOME的表内偏移地址,每次BX和SI都进行加2操作,一旦确定出等级,就可以直接采用BX或SI访问TAXRATE和DEDUCTION数据表,如图4.11所示。实际上,E×C运算相当于实现E×dd÷100(其中dd为相应的税率×100),因此,可以利用例4.23计算4字节除以1字节的子程序COMPT4DIV1,完成除以100的运算。4.6综合程序设计示例汇编语言程序如下:STACKSEGMENTSTACK'STACK'DW100HDUP(?)TOPLABELWORDSTACKENDSDATASEGMENTTAXRATEDW5,10,15,20,25,30,35,40,45DEDUCTIONDW0,25,125,375,1375,3375,6375,10375,15375INCOMELABELWORDDD500,2000,5000,20000,40000,60000,80000,100000,300000XDAT DW19,1600 DD1200,2600,3000,4000,5000,6000,7000,80004.6综合程序设计示例

DD9000,10000,15000,20000,30000,40000,50000,59900 DD60000,65000,200000YDAT DW? DD50DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AX4.6综合程序设计示例

LEASP,TOP LEASI,XDAT MOVCX,[SI] ADDSI,2 MOVBX,[SI] ADDSI,2 LEADI,YDAT+6 MOVYDAT,CX MOVYDAT+2,0 MOVYDAT+4,0L1: MOVAX,[SI] ;取出一位员工的工资 MOVDX,[SI+2] ADDSI,44.6综合程序设计示例CALLINCOMERATE ;计算个人所得税 MOV[DI],AX ;保存个人所得税 MOV[DI+2],DX ADDDI,4 ADDYDAT+2,AX ;统计单位个人所得税总额 ADCYDAT+4,DX XCHGAX,DX ;显示 CALLDISPAX XCHGAX,DX CALLDISPAX CALLDISPCR LOOPL1 CALLDISPCR4.6综合程序设计示例MOVAX,YDAT+4 ;显示单位个人所得税总额 CALLDISPAX MOVAX,YDAT+2 CALLDISPAX CALLDISPCR MOVAH,4CH INT21HINCOMERATEPROCNEAR ;计算个人所得税子程序 PUSHBX PUSHCX PUSHSI SUBAX,BX ;E=A-B SBBDX,0 JSINCRATE4 ;不需纳税出口4.6综合程序设计示例

XORBX,BX ;判定纳税等级 XORSI,SI MOVCX,9INCRATE1: CMPDX,INCOME[BX][SI+2] JBINCRATE2 JAINCRATE3 CMPAX,INCOME[BX][SI] JBINCRATE2INCRATE3: ADDBX,2 ADDSI,2 LOOPINCRATE1INCRATE2: ;根据纳税等级计算E×dd4.6综合程序设计示例

PUSHAX MOVAX,DX MULTAXRATE[BX] POPCX PUSHAX MOVAX,CX MULTAXRATE[BX] POPCX ADDDX,CX MOVCX,100 CALLCOMPT4DIV1 ;计算E×dd÷100 SUBAX,DEDUCTION[BX] ;计算S SBBDX,0 JMPINCRATE54.6综合程序设计示例INCRATE4: MOVDX,0 MOVAX,0INCRATE5: POPSI POPCX POPBX RETINCOMERATEENDPCOMPT4DIV1PROCNEARCOMPT4DIV1ENDPCODEENDS ENDSTART4.6综合程序设计示例例4.25设已经编写好8个子程序(SUB0~SUB7),要求编写程序实现从键盘输入0~7进行选择。解:如果采用比较指令,则会使程序变得复杂。为此,这里介绍跳转表的方法,即利用伪指令DW构成各个子程序入口地址的跳转表,然后根据键盘输入进行调用。汇编语言程序如下:STACKSEGMENTSTACK'STACK'DW100HDUP(?)TOPLABELWORDSTACKENDS4.6综合程序设计示例DATASEGMENTTABLE DWSUB0,SUB1,SUB2,SUB3,SUB4,SUB5,SUB6,SUB7STRINGDB'Pleaseinput0~7toselectsubroutines',0AH,0DH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXLEASP,TOP4.6综合程序设计示例ST1: MOVAH,9 ;显示提示字符串 LEADX,STRING ING21H MOVAH,1 ;输入一个字符 INT21H SUBAL,30H JBST1 CMPAL,8 JAEST1 SHLAL,1 ;(AL)×2 XORAH,AH MOVBX,AX CALLTABLE[BX] ;通过跳转表调用各个子程序4.6综合程序设计示例JMPST1 ;循环执行 MOVAH,4CH ;返回DOS操作系统 INT21HCODEENDSENDSTART例4.26在AVG缓冲区中保存有按报考号顺序排列的研究生考生平均成绩,在MIN缓冲区保存有与AVG相对应的考生单科最低成绩,报考学生总人数存储在字变量NUM中,给定录取条件为:(1)最低单科成绩不得低于60分;(2)选定录取分数线,按平均成绩从高分到低分录取,但录取人数不超过800人。编程求取录取分数线N1和实际录取人数N2。4.6综合程序设计示例解:首先,根据考生的单科最低成绩,剔除不合格的考生;然后将合格考生按平均成绩由高分到低分进行排序,在排序时,应该保留考生的考号信息。当合格考生人数超出计划录取人数时,录取分数线就是第800位考生的平均成绩;当合格考生人数不足计划录取人数时,录取分数线就是最后一位合格考生的平均成绩。汇编语言程序如下:STACKSEGMENTSTACK'stack'DW256HDUP(?)TOPLABELWORDSTACKENDS4.6综合程序设计示例N=2000 ;考生人数M=800 ;计划录取人数DATASEGMENTNUMDWN;学生总人数AVGDBNDUP(?);平均成绩MINDBNDUP(?);最低单科成绩N1DB? ;存放录取分数线N2DW? ;存放实际录取人数BUF1DBNDUP(?);暂存平均成绩BUF2 DWNDUP(?);暂存学号DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK4.6综合程序设计示例START:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXLEASP,TOP MOVCX,NUM CALLPRODUCT ;产生模拟数据 XORSI,SI ;剔除单科不合格的考生 XORDI,DI XORBX,BX MOVCX,NUM4.6综合程序设计示例ELIMINATE: CMPMIN[SI],60 JBELIMINATE1 MOVAL,AVG[SI] MOVBUF1[DI],AL ;保存合格考生的平均成绩 INCDI MOVBUF2[BX],SI ;保存合格考生的考号 ADDBX,2ELIMINATE1: INCSI LOOPELIMINATEMOVCX,DI ;对合格考生按平均成绩由高分到低分排序 LEASI,BUF1 LEADI,BUF24.6综合程序设计示例CALLSORTCMPCX,M;合格考生数是否大于计划录取人数?JBEMATRI00MOVCX,MMATRI00: MOVBX,CX MOVAL,BUF1[BX] ;录取分数线 MOVN1,AL MOVN2,BX ;实际录取人数 MOVAL,N1 ;显示录取分数线 CALLDISPAL CALLDISPCR MOVAX,N2 ;显示实际录取人数4.6综合程序设计示例CALLDISPAX CALLDISPCR MOVAH,4CH ;返回DOS系统INT21HSORT PROCNEAR ;数据排序程序 PUSHAX PUSHCX PUSHSI PUSHDI DECCX ADDSI,CX ;SI指向BUF1末地址 ADDDI,CX ;SI指向BUF2末地址 ADDDI,CX4.6综合程序设计示例LP1: ;外循环开始PUSHCXPUSHSI PUSHDILP2: ;内循环开始MOVAL,[SI]CMPAL,[SI-1]JBENOXCHGXCHGAL,[SI-1] ;交换操作MOV[SI],AL MOVAX,[DI] ;考生考号也同步交换 XCHGAX,[DI-2] MOV[DI],AX4.6综合程序设计示例NOXCHG:DECSI DECDI DECDILOOPLP2 POPDIPOPSIPOPCXLOOPLP1 POPDI POPSI POPCX POPAX RET4.6综合程序设计示例SORT ENDPPRODUCTPROCNEAR ;产生模拟数据 PUSHAX PUSHCX MOVAL,17 MOVBH,59 LEASI,AVGPR1: ADDAL,BH CMPAL,100 JAEPR1 CMPAL,40 JBPR1 MOV[SI],AL4.6综合程序设计示例INCSI LOOPPR1 POPCX MOVAL,5 MOVBH,3 LEASI,AVG LEADI,MINPR2: ADDAL,BH CMPAL,15 JAEPR2 MOVBL,[SI] SUBBL,AL4.6综合程序设计示例MOV[DI],BL INCSI INCDI LOOPPR2 POPAX RETPRODUCTENDPCODEENDSENDSTART4.6综合程序设计示例例4.27在首地址为XDAT的字节型数组中,第一个单元存放数的个数N(N<100),第二、三单元分别存放门限T1和T2(T1<T2<256),从第4个单元开始存放N个无符号数(每个数占用一个字节)。编写汇编语言程序实现:先对这N个数进行剔除奇异值处理,再进行滑窗式滤波处理,要求将滤波结果按四舍五入取整后存储在YDAT开始的内存单元中,并将数据个数存放在字节变量NUM中。设x(n)为数据原值,M为剔除奇异值后剩余数据的个数,则剔除奇异值方法为:4.6综合程序设计示例滑窗式滤波方法为:例如,设N=10,T1=1,T2=5,则●原数据:3,1,4,7,5,4,3,2,6,4●剔除奇异值后:3,1,4,5,4,3,2,4●滤波且四舍五入取整:3,1,3,3,4,4,2,44.6综合程序设计示例解:在实际的信号处理和控制系统中,经常采用DSP、CPU或单片机构成,这样对数据进行处理就远比在普通微机上的复杂,因此,有必要进行说明。在实际环境的数据采集中,会受到干扰和噪声的影响,也可能会产生不可预见的错误数据,导致数据明显偏移正常范围,这些值称为奇异值。在对数据区进行处理之前,应该将奇异值剔除,这样虽然会对处理精度有一定的影响,但不至于使算法失效,实际上,这样的奇异值只有很少几个,对系统精度几乎没有影响。

平滑滤波是常用的一种信号处理方法,这里采用5点平滑,并对结果要进行四舍五入处理。由于程序采用整数表示数据,因此,应该在除法之前完成四舍五入运算。4.6综合程序设计示例记:则将分成两部分:5的整倍数和余数,这样四舍五入运算实际上就是对余数进行适当的处理:其中,f(.)表示四舍五入运算。直接利用整数运算的特性,可以简化成:4.6综合程序设计示例这表示,计算的四舍五入结果时,只需要将先加2,再完成除以5的操作.一般情况下,计算的四舍五入结果时,其结果为,其中int(.)表示取整运算。汇编语言程序如下:NEQU100 ;数据个数T1EQU10 ;低门限T2EQU50 ;高门限STACKSEGMENT DW256DUP(?)TOPLABELWORDSTACKENDS。

4.6综合程序设计示例DATASEGMENTXDATDBN,T1,T2 ;输入数据区 X=17REPTNX=(X+79)mod256DBXENDMYDATDBNDUP(?) ;输出数据区NUMDB? ;数据的实际个数BUF1 DBNDUP(?) DATAENDS4.6综合程序设

温馨提示

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

评论

0/150

提交评论