计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试三级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
单选题下面是关于PC机的叙述,其中错误的是______。
进入题库练习
单选题虚拟存储器一般的主存—辅存系统的本质区别之一是( )。A.使用虚拟存储器,编程人员必须用变址寻址或基址寻址等方式来扩大逻辑地址空间,使之与物理空间相匹配B.虚拟存储器对物理空间的分配是由操作系统而完成的,而不是由程序人员进行安排的C.虚拟存储器访问主存时不必进行虚实地址的变换,很方便,深受程序人员的欢迎D.虚拟存储器空间比物理空间小,但速度快得多
进入题库练习
单选题计算机中资料传送有2种方式,即并行和串行方式,其中并行口的信息传送方式是( )。
进入题库练习
单选题不能将累加器AX的内容清零的指令是( )。
进入题库练习
单选题键盘是PC机最基本的输入设备,下面有关PC机键盘的叙述中,错误的是
进入题库练习
单选题设关系R(SNO,SNAME,DNO,MAG),主键为SNO。其中SNO为学生号,SNAME为学生姓名,DNO为系号,MAG为系主任。则关系R( )。
进入题库练习
问答题函数ReadDat()的功能是实现从文件IN73.DAT中读取一篇英文文章并存入到字符串数组xx中。请编制函数SortCharA(),该函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数WriteDat()把结果xx输出到文件OUT73.DAT中。 注意:部分源程序已给出。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include <stdio.h> #include <string.h> #include <stdlib.h> char xx[50][80]; int maxline=0; int ReadDat(void); void WriteDat(void); void SortCharA() void main() system("CLS"); if(ReadDat()); printf("数据文件IN73.DAT不能打开! /n/007"); return; SortCharA(); WriteDat(); int ReadDat(void); FILE * fp; int i=0; char * p; if((fp=fopen("IN73.DAT","r"))==NULL) return1; while(fgets(xx[1],80,fp)!=NULL) p=strchr(xx[i],'/n'); if(p) * p=0; i + +; maxline=i; fclose(fp); return 0; void WriteDat() FILE * fp; int i system("CLS"); fp=fopen("IN73.DAT","w"); for(i=0,i<maxline;i + +) printf("% s/n",xx[i]); fprintf(fp,"% s/n",xx[i]); fclose(fp);
进入题库练习
问答题请编制程序,其功能为:已知斐波那契(Fibonacci)数0,1,1,2,3,5,8,13……这些数的关系是:从第三项开始,每项都是它前面两项之和。若用ai表示第i项,则有a1=0、a2=1、 ai=ai-1+ai-2(i≥3)。试求出第24个斐波那契数,存放在RESULT开始的内存单元中。 部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。 部分程序如下: ; PROG1.ASM EXTRN LOAD:FAR, SAVE:FAR N EQU 1 DSEG SEGMENT SOURCE DW N DUP (?) RESULT DW N DUP (0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DSEG ENDS SSEG SEGMENT STACK DB 128 DUP (?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG;SS:SSEG START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DSEG MOV DS,AX LEA DX, SOURCE LEA SI,NAME0 MOV CX,N CALL LOAD ; *** BEGIN *** MOV AX,______ MOV BX, 1 _____________ L1: _____________ _____________ _____________ MOV [RESULT],BX ; *** END *** LEA DX,RESULT LEA SI,NAME1 MOV CX,N CALL SAVE RET START ENDP CSEG ENDS END START
进入题库练习
问答题请编制程序,其功能是:内存中连续存放着20个十六位二进制数,对每个数逻辑右移,使其最低位为"1"(值为零的字不变)。例如:内存中有A704H(1010011100000100B),0000H,9A58H…结果为29C1H(0010100111000001B),0000H,134BH…部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并白行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:
进入题库练习
问答题已知数据文件IN24.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的2位数ab(新2位数的十位数字是原4位数的千位数字,新2位数的个位数字是原4位数的十位数字),以及把个位数字和百位数字组成另一个新的2位数cd(新2位数的十位数字是原4位数的个位数字,新2位数的个位数字是原4位数的百位数字),如果新组成两个2位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新2位数的十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存人数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT24.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cni。 请勿改动主函数main()、读函数.readDat()和写函数writeDat()的内容。 [试题程序] #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void writeDat(); void jsVal() void readDat() int i; FILE*fp; fp=fopen("IN24.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"% d", fclose(fp); voidmain() int i; readDat(); jsVal(); printf(”满足条件的数=% d/n",cnt); for(i=0;i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat(); void writeDat() FILE*fp; int i; fp=fopen("OUT24.DAT","w"); fprintf(fp,"% d/n",cnt); for(i=0;i<cnt;i++). fprintf(fp,"% d/n",b[i]); fclose(fp);
进入题库练习
问答题已知在文件IN42.DAT中存有N个实数(N<200),函数ReadDat()读取这N个实数并存入数组xx中。请编制程序CalValue(),其功能要求: (1)求出这N个实数的平均值aver。 (2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出到文件OUT42.DAT中。 注意;部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include<stdio.h> #include<conio.h> #define MAXNUM 200 float xx[MAXNUM]; int N=0; double aver=0.0; double sumint=0.0; double sumdec=0.0; int ReadDat( ); void WriteDat( ); void CalValue void main( ) clrscr( ); if(ReadDat( )) printf ("数据文件IN42.DAT不能打开! /007/n"); return; CalValue ( ); printf ("文件IN42.DAT中共有实数%d个/n", N); printf ("平均值=%.21f/n", aver); printf ("整数部分=%.21f/n", sumint); printf ("小数部分之和=%.21f/n", sumdec); WriteDat( ); int ReadDat() FILE *fp; int j; if((fp=fopen("in42.dat","r"))==NULL) return 1; while(!feof(fp)) fscanf (fp, "%f", if (xx[N] >0.001) N++; fclose(fp); return 0; void WriteDat() FILE *fp; fp=fopen("OUT42.DAT","w"); fprintf(fP,"%d/n%.21f/n%.21f/n%.21f/n",N,aver,sumint,sumdec); fclose(fp);
进入题库练习
问答题对10个候选人进行选举,现有一个100条记录的选票数据文件IN8.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票。给定函数ReadDat()的功能是把选票数据读人到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入YY[0]到YY[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT8.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WfiteDat()的内容。 [试题程序] #include<stdio.h> #include<memory.h> char xx[100][11]; int yy[10]; int ReadDat(void); void WriteDat(void); void CountRs(void) voidmain() int i; for(i=0;i<10;i++) yy[i]=0; if(ReadDat()) printf("选票数据文件IN8.DAT不能打开!/007/n"); return; CountRs(); WriteDat(); int ReadDat(void) FILE *fp; int i; char tt[13]; if((fp=fopen("IN8.DAT","r"))==NULL) return 1; for(i=0;i<100;i++) if(fgets(tt,13,fp)==NULL) return 1; memcpy(xx[i],tt,i0); fclose(fP); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT8.DAT","w"); for(i=0;i<10;i++) fprintf(fp,"% d/n",yy[i]); printf("第%d个人的选票数=%d/n",i+1,yy[i]); fclose(fp);
进入题库练习
问答题已知文件IN19.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件 OUT19.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序 #include <stdio.h> #include <mem.h> #include <string.h> #include <conio.h> #include <stdlib.h> #define MAX 100 typedef struct char dm[5]; /* 产品代码 */ char mc[11]; /* 产品名称 */ int dj; /* 单价 */ int sl; /* 数量 */ long je; /* 金额 */ PRO; PRO sell [MAX]; void ReadDat ( ) void WriteDat( ) ; void SortDat() main ( ) memset(sell, 0, sizeof(sell)); ReadDat(); SortDat(); WriteDat() void ReadDat( FILE *fp; char str[80], ch[11]; int i; fp = fopen("IN19.DAT", "r"); for(i=0; i<100; i++) fgets(str, 80, fp); memcpy(sell[i] .dm, str, 4); memcpy(sell[i].mc, str + 4, 10); memcpy(ch, str + 14, 4); ch[4] = 0; sell[i] .dj = atoi(ch); memcpy(ch, str +18, 5); ch[5] = 0; sell[i].sl = atoi(ch); sell[i].je = (long)sell[i] .dj * sell[i].sl; fclose (fp) void WriteDat() FILE *fp; int i; fp = fopen("OUT19.DAT", "w"); for(i = 0; i < 100; i++) fprintf(fp, "%s %s %4d %5d %101d/n", sell[i].dm, sell[i].mc, sell[i].dj, sell[i] .sl, sell[i] .je); fclose(fp);
进入题库练习
问答题已知数据文件IN36.DAT中存有200个4位数,并已调用读函数readDat()把这些数存人数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续小于该4位数以后的5个数且该数是偶数(该4位数以后不满5个数,则不统计),则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存人数组b中,最后调用写函数wnteDat()把结果cnt及数组b中符合条件的4位数输出到OUT36.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 [试题程序] #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void writeDat(); void jsVal() void readDat() int i; FILE*fP; fP=fopen("IN36.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d", fclose(fp); voidmain() int i; readDat(); jsVal(); printf("满足条件的数=%d/n",cnt); for(i=0;i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat(); void writeDat() FILE*fp; int i; fp=fopen("OUT36.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fp);
进入题库练习
问答题请编制程序,其功能是:剔除10个8位无符号二进制数据中的最大值和最小值,然后按四舍五入原则计算其余8个数据的算术平均值,将剔除最大值和最小值之后的8个数据依次存入指定的内存区域中,并在其后存放平均值。 例如: 内存中有:01H,05H,04H,00H,07H,09H,02H,06H,08H,03H 结果为: 01H,05H,04H,07H,02H,06H,08H,03H,05H 部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。 请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 10 DSEG SEGMENT SOURCE DB N DUP(?) RESULT DB N-1 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 TEMP DW 0 DSEG ENDS SSEG SEGMENT STACK DB 200 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG,DS:DSEG,ES:DSEG START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV ES,AX LEA DX,SOURCE LEA SI,NAME0 MOV CX,N CALL LOAD ******** BEGIN ******** XOR AX,AX XOR BX,BX XOR DX,DX MOV SI,OFFSET SOURCE MOV BL, (1) ; 取第一个数作为最大值暂存BL MOV DL, (2) ; 取第一个数作为最小值暂存DL MOV CX,N GOON: ADD AL,[SI] ADC AH,0 CMP BL,[SI] JA (3) MOV BL,[SI] CONT: CMP DL,[SI] (4) MOV DL,[SI] NEXT: INC SI LOOP GOON CLD LEA SI,SOURCE LEA DI,RESULT MOV CX,N LP2: LODSB CMP AL,BL JE LP1 CMP AL,DL JE LP1 CBW ADD TEMP,AX STOSB LPI: LOOP LP2 MOV AX,TEMP MOV DL, (5) DIV DL ADD AH,AH CMP AH,DL JB OFF (6) OFF: MOV [DI],AL ; ******** END ******** LEA DX,RESULT LEA SI,NAME1 MOV CX,N-1 CALL SAVE ; SAVE RESULT TO FILE RET START ENDP CSEG ENDS END START
进入题库练习
问答题函数ReadDat()实现从文件in.dat中读取一篇英文文章并存入到字符串数组xx中,请编制函数sortcharD(),其函数的功能是以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组中,最后调用函数writeDat(),把结果xx输出到文件out.dat中。 例:原文:dAeBfC. 结果:ABCdef. 原数据文件存放的格式是每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序给出如下: 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 [试题源程序] #include<stdio.h> #include<strinq.h> #include<conio.h> char xx([50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void SortCharD(void) int ReadDat(void) FILE*fp; int i=0; char*P; if((fp=fopen("IN.DAT","r"))==NULL)return 1: while(fgets(xx[i],80,fp)!=NULL) P=strchr(xx[i],'n'); if(p)*P=0: i++: maxline=i; fclose(fp); return 0; void WriteDat(void) FILE*fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp); void main() system("cls"); if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; SortCharD(); WriteDat():
进入题库练习
问答题请编制程序,其功能是:内存中连续存放着20个无符号二进制字序列Xi(i=1,2,…,20),字的最高3位为000,此序列对应某一信号在一段时间内的连续变化,现对该信号进行一阶低通数字滤波,其滤波方程为:Yi=(15*Yi-1/16)+(Xi/16),Y0=0Yi(i=1,2…,20)为滤波后得到的新序列,结果存入内存。例如:内存中有01FFH,02FFH…结果001H,004DH…部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:
进入题库练习
问答题已知在文件IN44.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量。函数PteadDat()的功能是读取这100个销售记录并存人数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存人结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT44.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 [试题程序] #include<stdio.h> #include<memory.h> #include<string.h> #include<stdlib.h> #define MAX 100 typedef struct char dm[5]; char mc[11]; int dj; int sl; long je; PRO; PRO sell[MAX]; void ReadDat(); void WriteDat(); void Sort;Dat() voidmain() memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat;(); void ReadDat() FILE*fp; char str[80],ch[11]; int i; fp=fopen("TN44.DAT","22"); for(i=0;i<100;i++) fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4); ch[4]=0; sell[i].dj=atoi(ch); memcpy(ch,str+18,5); ch[5]=0; sell[i].sl=atoi(ch); sell[i].je=(10ng)sell[i].dj*sell[i].Sl; fclose(fp); void WriteDat() FTLE*fp; int i: fp=fopen("OUT44.DA2","w"); for(i=0;i<100;i++) fprintf(fp,"%s%S%4d%5d%10ld/n",sell[i].dm,sell[i].mc, sell[i].dj,sell[i].sl,sell[i].je); fclose(fp);
进入题库练习
问答题己知数据文件in55.dat中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函grisValue(),其功 能是:求出千位数上的数减百位数上数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的4位数平均值pjzl,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out55.dat文件中。 例如:9123,9-1-2-3>0,则该数满足条件,计算平均值pjzl,且个数cnt=cnt+1。 9812,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。 注意:部分源程序已给出。 程序中已定义数组:a[300],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include<stdio.h> int a[300], cnt=0; double pjzl=0.0,pjz2=0.0; jsValue() main() int i; readDat(); jsValue(); writeDat(); print f ("cnt =%d/n满足条件的平均值pjz1=%7.21 f/n不满足条件的平均值 pjz2=%7.21f/n",cnt,pjz1,pjz2); readDat () FILE *fp; int i; fp=fopen("in55.dat","r"); for(i=0;i<300;i++) fscanf(fp,"%d,", fclose(fp); writeDat () FILE *fp; int i; fp=fopen("out55.dat","w"); fprintf(fp,"%d/n%7.21f/n%7.21f/n",cnt ,pjz1,pjz2); fclose(fp);
进入题库练习
问答题请编制程序,其功能是:将内存中由SOURCE指示的10个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。 例如: 内存中有:1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H 结果为:06H,1EH,74H,42H,30H,18H,25H,04H,91H,91H,81H,F3H 部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。 请填空BEGIN和END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。[试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 10 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(0) RESULT DB N+2 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 NDATA DB N DUP(0) PDATA DB N DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;置附加段寄存器 LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;******BEGIN****** LEA SI,SOURCE ______ DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址 MOV BX,OFFSET NDATA ;NDATA为负数数组存放缓冲区首址 XOR DX,DX MOV CX,N CLD MAIN 1: LODSB TEST AL,______ JZ MAIN2 INC DH MOV [BX],AI. INC BX ______ MAIN2: INC DL MOV [DI],AL INC DI MAIN3: ______ MAINl LEA SI,PDATA LEA DI,RESULT MOV [DI],DL INC DI XOR CX,CX MOV CL,DL MAIN4: MOV AL,______ MOV [DI],AL INC DI INC SI LOOP ______ MOV [DI],DH INC DI XOR CX,CX MOV CL,DH MOV BX,OFFSET NDATA MAIN5: MOV AL,[BX] MOV [DI],AL INC DI ______ LOOP MAIN5 ;****** END****** LEA DX,RESULT ;结果数据区首址 LEA SI,NAMEl ;结果文件名起始地址 MOV CX,N+2 ;字节数 CALL SAVE ;保存结果到'OUTPUT1.DAT'文件 RET START ENDP CODE ENDS END START
进入题库练习