计算机等级考试PC技术上机南开100题附三份答案_第1页
计算机等级考试PC技术上机南开100题附三份答案_第2页
计算机等级考试PC技术上机南开100题附三份答案_第3页
计算机等级考试PC技术上机南开100题附三份答案_第4页
计算机等级考试PC技术上机南开100题附三份答案_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

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

文档简介

三级PC南开100题第一题:-、请编制程序,其功能是:将内存中由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域,存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。例如:内存中有1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H结果为 06H,lEH,74H,42H,30H,l8H,25H,04H,91H,91H,81H,F3H部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU40STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(O)RESULTDBN+2DUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0NDATADBNDUP(O)PDATADBNDUP(O)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUT1.DAT'中读取数据;****BEGIN****LEASI,SOURCEMOVDI,OFFSETPDATA;PDATA为正数数组存放缓冲区首址

MOVXORMOVCLDBX,OFFSETNDATA ;NDATA为负数数组存放缓冲区首址DX,DXCX,NMAIN1:LODSBTESTAL, JZMAIN2INCDHMOV[BX],ALINCBXMAIN2:INCDLMOV[DI],AL ;+INCDIMAIN3:MAIN1LEASI,PDATALEADLRESULTMOV[DIl.DLINCDIXORex,exMOVCL,DLMAIN4:MOVAL, MOV[DI],ALINCDIINCSILOOPMOV[DILDHINCDIXORex,exMOVCL,DHMOVBX,OFFSETNDATAMAIN5:MOVAL,[BX]MOV[DI],ALINCDILOOPMAIN5;****END****LEADX,RESULT ;结果数据区首址LEASI,NAME1 ;结果文件名MOVCX,N+2 ;字节数CALLSAVE ;保存结果到文件RETSTARTENDPCODEENDSENDSTART第二题:一、请编制程序,其功能是:内存中连续存放着10个无符号8位格雷码表示的数,现将此卜个数转换成十个8位二进制数,结果存入内存,其转换方法为二进制数的最高位D7与格雷码的最高位G?相同,二进制数的其余七位DK(k=6,0)分别为格雷码的位GK(k=6,…,0)与二进制数的位Dk+i(k=6,…,0)异或的结果。例如:内存中有 OOH,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H结果为 OOH,02H,32H,45H,08H,19H,6711,03H,90H,85H部分程序已给出,其中原始数据由过程LOAD从文件INPUTLDAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标也每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与10.OBJ链接产生PR0G1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?);顺序存放10个字节数RESULTDBNDUP(O);存放结果NAMEODB'INPUTl.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUTLDAT'中读取数据;****begin****LEASI,SOURCELEADI,RESULTMOVCX,10AGNO:MOVAL,[SI]MOVCX,8MOVBX,0AGNI:MOVAH,0SHLBL,1AL,1RCLAH,1CMPAH,

JMPNEXTSET_ONE:ORBL,01HNEXT:MOV ,BLLOOPAGNIMOV[DI],BLINCSIINCDILOOPAGNO;****ENI)****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;结果字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第三题:一、请编制程序,其功能是:内存中连续存放着20个十六位二进制无符号数序列,请将它们排成升序(从小到大)。例如:内存中有 7001H,7004H,7002H…(假设后17个字均大与7004H)结果为7001H,7002H,7004H…(后跟17个字,按从小到大的顺序排列)部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的源程序使其完整(空白己用横线标出,每行空白一般只需•条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与10.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDWNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUTLDAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AX

PUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;数据区起始地址LEASI.NAMEO ;原始数据文件名MOVCX,N*2 ;字数CALLLOAD ;从'INPUT1.DAT'中读取数据;****begin****LEASI,SOURCELEADI,RESULTMOVCX,NNEXTO:MOVAX,[SI]MOV[DI],AXADDSI LOOPCLDMOVBX,N-lMALI:LEASI,RESULTMOVCX, NEXT:LODCMP[SI],AXJAECONTXCHG[SI], MOV[SI-2],AXCONT:LOOPMALI产***end****LEADX,RESULT ;结果数据区首址LEASI,NAME1 ;结果文件名MOVCX,N*2 ;结果字节数CALLSAVE ;保存结果到文件RETSTARTENDPCODEENDSENDSTART第四题:一、请编制程序,其功能是:内存中连续存放着24个无符号二进制字序列,字的最高位为000,此序列对应某一信号在一段时间内的连续变化,现对第21个二进制字前的20个二进制字进行移动平均处理,其方法为:将要处理的字X,用以它为开始的连续五个字的平均数/5代替(余数舍去),得到新的20个无符号二进制字序列,结果存入内存。例如:内存中有 0100H,0200H,0300H,0400H,0500H,0600H-结果为 0300H,0400H…部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PR0G1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU24STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDWNDUP(?) ;顺序存放24个字RESULTDW20DUP(O) ;存放结果NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;数据区起始地址LEASI,NAMEO ;原始数据文件名MOVCX,N*2 ;字数CALLLOAD ;从'INPUTLDAT'中读取数据;****begin****MOVDI,0MOVSI,0MOVCX,20MOVBX, AGNO:MOVAX,SOURCE[SI]PUSHSIPUSHexMOVAGNI:INCSIINCSIADDAX,SOURCE[SI]LOOPAGNIDIVBXMOVRESULT[DI],AXINCDIPOPexPOPSIINCSILOOPAGNO;****END****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,40;结果字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第五题:一、请编制程序,其功能是:内存中从SOURCE开始连续存放着21个八位有符号数(补码),其相邻两数之间差值不超过-8至7。对这种变化缓慢的数据可采用差分方法进行压缩。即第一个数据不变,其后的数据取与前一-数据的差值并用四位二进制补码表示,两个差值拼成一个字节,前一个差值放在高四位,后一个差值放在低四位。例如:原数据(X[n]):23H,27H,2AH,29H,22H…压缩后(丫[n]):23H, 43H, F9H…编程按上述方法进行压缩,结果保存在RESULT开始的内存单元中。部分程序已给出,其中原始数据由过程LOAD从文件1NPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDB2*N+1DUP(?)RESULTDBN+lDUP(O)NAMEODB'INPUTLDAT',0NAME1DB'OUTPUT1.DAT,0NDATADBNDUP(O)PDATADBNDUP(O)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAX

MOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,2*N+1;字节数CALLLOAD;从'INPUT1.DAT'中读取数据;****begin****LEASI,SOURCELEADI,RESULTCLDMOVSB;Y[O]=X[O]XORBX,BX;FLAG=OMOVDX,N*2;COUNTERCOMPRESS:LODSB;X[n]-X[n-l]SUB—;FLAG二NOTFLAGJ _LOW_HEXMOVCL,4MOV_AL,CLAH,ALJMPNEXTLOW_HEX:ORAL,AHSTOSBNEXT:JNECOMPRESS;****end****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N+l;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第六题:一、请编制程序,其功能是:将内存中存放着20个数字0〜9之间的ASCII字符(包括数字0和9的ASCII字符)或SP字符(20H),请将数字。〜9之间的ASCII字符(包括数字0和9的ASCII字符)转换为相应的八位二进制数,并将SP字符转换为$字符(24H)。将按上述方法处理后得到的20个字节存入内存中。例如:内存中有20H(3P'),30HCOO,31H(T),31H(T),20H('SP'),32H(2'),…,39H(9)(共20个ASCII字符)结果为24H('$'),00H,01H,01H,01H,24H('$'),02H(2) ,09H('9')(共20个字节)部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB"INPUT1.DAT(,0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUT1.DAT'中读取数据;****BEGIN****MOVDI,0CHAN:SUBAL,20HJZCHANGESUBAL,MOVRESULT[DI],ALDECexJZEXITJMPCHANCHANGE:MOVRESULT[DI],24HINCDIINCSIJMPEXIT:NOP

;****END****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第七题:一、请编制程序,其功能是:内存中共有30个字节型数据,找出其中的两个ASCII字符串并进行校验。欲寻找ASCII字符串由13个字符组成:#(23H),7个ASCII字符,*(2AH),2个ASCII字符,回车符(0DH),换行符(0AH).校验方法为:对字符#及字符*之间的7个ASCII字符进行异或操作,若异或操作结果的ASCCII字符表示(异或操作结果高4位的ASCII字符表示在前,低4位的ASCII字符表示在后)与原字符串中字符*之后的两个ASCH字符相同,则将原字符串原样保存;反之,则将原字符串中的所有字符(共13个)均用字符!(21H)代替。例如:内存中有33H,35H,23H(#,第一个字符串开始),46H,41H,30H,2EH,34H,3DH,31H,2AH(),32H,31H,0DH,0AH,46H,23H(第二个字符串开始),46H,41H,30H,2EH,34H,3DH,30H,2AH(*),32H,31H,ODH,OAH,55H结果为23H,46H,41H,30H,2EH,34H,3DH,31H,2AHC*5),32H,31H(校验正确,该字符串原样保持),0DH,0AH,21H,21H,21H,21H,21H,21H,21H,21H,21H.21H,21H,21H,21H(校验错,整个字符串用字符T代替)。部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU26STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBN+4DUP(?)RESULTDBNDUP(O)HHDB2DUP(O)NAMEODB'INPUT1.DAT),0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFAR

pushDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N+4;字节数CALLLOAD;从‘INPUT1.DAT'中读取数据;****BEGIN****MOVSI,0MOVDI,0MOVBX,2;两个ASCH字符串REPEAT:MOVAH,0SEARCH:MOVAL,SOURCE[SI]INCSICMPAL,'#'SEARCHMOV RESULT[DI],ALINC DISEARCH1:MOVAL,SOURCE[SI]INCSICMPAL, JEASCIIMOVRESULT[DI],ALINCDIXORAH,ALJMPASCII:MOVRESULT[DI],ALINCDIPUSHDIMOVDI,0MOVDH,2MOVDL,AH ;异或结果暂存在DL中MOVCL,4 ;先将异或结果高4位转换成ASCII字符SHRAH.CL ;本行开始的4行语句将一个十六进制数转换为ASCII码CHANGE:CMPAH,10JLADD_OADDAH,'A'-'O'-10ADD0:ADDAH,'(TMOVHH[DI],AHINCDIDECDHJZEXTMOVAH,DL ;再将异或结果低4位转换成ASCH字符ANDAH,OFHJMPCHANGEEXT: POPDIMOVAL,SOURCE[SI]MOVRESULT[DI],ALINCSI

INCDIMOVAH,SOURCE[SI]MOVRESULT[DI],AHINCSIINCDIMOVDL,HHMOVDH,HH+1CMPAX,DXERRMOVAL,ODH;校验正确MOVRESULT[DI],ALINCDIMOVAL,OAHMOVRESULT[DI],ALINCDIJMPLPERR:SUBDI,11;校验错误MOVALJMOVCX,COVER:MOVRESULT[DI],ALINCDILOOPCOVERLP:JZEXITJMPREPEATEXIT:NOP;****END****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第八题:一、请编制程序,其功能是:内存中连续存放着10个十六位二进制数,每个数的序号依次定义为0,1,…,9。统计每个数中位为0的个数N°,N|,…,Ng(均用一个字节表示),然后按序定义将No至Ng存入内存中,最后再用一个字节这10个数中为0的位的总数n(n=N°+Ni+…+NQ。例如:内存中有 0000H,OOOFH,FFFFH…结果为 10H,OCH,00H…最后为n部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与10.OBJ链接产生PR0G1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:

EXTRNLOAD:FAR,SAVE:FARN EQU10STACSEGMENTSTACKDB128DUP(?)STAC ENDSDATA SEGMENTSOURCEDBNDUP(?) ;顺序存放10个字节数RESULTDBN+lDUP(O) ;存放结果NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;数据区起始地址LEASI,NAMEO ;原始数据文件名MOVCX,N*2 ;字节数CALLLOAD ;从'INPUT1.DAT,中读取数据;****begin****MOVDI,OFFSETRESULTMOVCL,NMOVBX,0MOVDH,0PRO: MOVDL,0MOVAX,SOURCE[BX]MOVCH, COUNT: INCJUMPDLJUMP:DECCHJNZMOV[DI],DLADDDH,DLINCDIADDDECCLJNZPROMOV;****END****—LEADX,RESULT ;结果数据区首址LEASI,NAME1 ;结果文件名MOVCX.N ;结果字节数CALLSAVE ;保存结果到文件RETSTARTENDPCODEENDSENDSTART第九题:一、请编制程序,其功能是:内存中有一个由16个十六位二进制数组成的数组(SOURCE)和一个字变量L。试将L作为逻辑尺对数组SOURCE进行下列处理:如L的第i位为0,则数组的第i个数不变;如L的第i位为1,则数组的第i个数按位取反。字L的位序从低到高依次为0至15,数组下标依次从0到15。例如:L=0009H,数组为139CH,89C6H,5437H,8819H-变换为EC63H,89C6H,5437H,77E6H—部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入(L在前,SOURCE在后).运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的源程序使其完整(空白己用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与10.OBJ链接产生PR0G1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU16STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTLDW?SOURCEI)WNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,L;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,2*(N+1);字节数CALLLOAD;从’INPUTLDAT'中读取数据;****begin****LEASI,SOURCEMOVCX,NMOVDX, L0:MOVAX,[SI]L,DXSTORE

NOTAXSTORE:MOV[DI],AXADDDI,2ADDSI,2LOOPLO产***end****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,2*N;结果字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第十题:一、请编制程序,其功能是:计算10个有符号字节数据的绝对值之和(字型),并找出绝对值最大的数及其所在的偏移地址,最后将它们依次存入指定的内存中,结果以FFH结束。例如:内存中有1OH,O1H,27H,OOH,FEH,8OH.OOH,O3H,FFH,O1H结果为BFH,OOH,8OH,O5H,OOH,FFH部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白「般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不iE确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDB6DUP(O)MAXDB?NAMEODB'INPUTLDAT',0NAME1DB'0UTPUT1.DAT*,0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS:DSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAX

MOVAX,DSEGMOVDS,AXMOVES.AX ;置附加段寄存器LEADX,SOURCE ;数据区起始地址LEASI.NAME0 ;原始数据文件名MOVCX.N ;字节数CALLLOAD ;从'INPUT1.DAT中读取数据;****begin****LEASI,SOURCELEADI,RESULTMOVDX,SIMOVCX.N-lMOVAL,[SI]ADDAL,0JNSPlPl: MOVMAX,ALADD[DI],ALGOON:INCSIMOVAL,[SI]ADDAL,0JNSP2NEGALP2: ADD[DI],ALCMPMAX,ALJAEMOVMAX,ALMOVDX,SINEXT:LOOPGOONADDDI,2MOVAL,MAXMOV[DI],ALINCDIMOV[DI],DXADDDI,2MOVBYTEPTR[DI], ;****eni)****LEADX,RESULT ;结果数据区首址LEASI,NAME1 ;结果文件名MOVCX,6 ;字节数CALLSAVE ;保存结果到文件RETSTARTENDPCSEGENDSENDSTART第十一题:一、请编制程序,其功能是:以SOURCE开始的内存区域存放着多个字节的数据,其中有压缩BCD码和其他数据。现按下列编码规则进行编码:在第每个压缩BCD码前面加两个字节前缀代码BEH和CCH,并在其后加两个字后缀代码DDH和EDH;如果不是压缩BCD码,则该数据前后均加两个代码ODH和OEH。编码后的数据存放到RESULT指示的内存区域。例如:内存中有12H,D9H,86H,54H-结果为 BEH,CCH,12H,DDH,EDH,0EH,D9H,0DH,0EH,BEH,CCH,86H,DDH,EDH,BEH,CCH,86H,DDH,EDH…部分程序已给出,其中原始数据山过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白己用横线标出,每行空白一般只需条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDB5*NDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS::STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从‘INPUT1.DAT'中读取数据;****begin****LEASI,SOURCEMOVDI,OFFSETPDATA;PDATA为正数数组存放缓冲区首址MOVCX,NCLP1:MOVAL,[SI]MOVBL,ALMOVAII,ALANDAL,OFOH

MOVCL,4POPCXCMPTOC\o"1-5"\h\zJA CLP2CMP AH,9JA CLP2MOVINC DIMOV BYTEPTR[DI],OCCHINCDIMOVBYTEPTR[DI],BLINCDIMOVBYTEPTR[DI],ODDHINCDIMOVBYTEPTR[DI],OEDHJMPCLP3CLP2:MOVBYTEPTR[DI],ODHINCDIMOVBYTEPTR[DI],OEHINCDIMOVBYTEPTR[DI],BLINCDIMOVBYTEPTR[DI],ODHINCDIMOVBYTEPTR[DI],OEHCLP3:INCSIINCDI;****ENI)****LEADX,RESULT ;结果数据区首址LEASI,NAME1 ;结果文件名MOVCX,N+2 ;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第十二题:一、请编制程序,其功能是:内存中连续存放的20个八位无符号数是一个自动抄表仪抄录的20个用户某月的用水量(立方米),为了控制用水量,水费计算公式如下(X表示用水量;Y表示水费,单位为分):1、Y=X*70X<=52、Y=X*1005<X<=53、Y=X*150X>20例如:用水量(X): 04H, 10H, 18H-水费(Y):0118H,0640H,0E10H-试计算出这20个用户应缴纳的水费,结果用字(WORD)表示。部分程序已给出,其中原始数据由过程LOAD从文件INPUTI.DAT中读入SOURCE开

始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的•段源程序使其完整(空白已用横线标出,每行空白•般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;数据区起始地址LEASI,NAMEO ;原始数据文件名MOVCX,N ;字节数CALLLOAD ;从'INPUT1.DAT'中读取数据;****begin****LEASI,SOURCELEACLDDI,RESULTMOVCX,NMOVBL,70MOVBH,100NEXT:MOVDL,150CMPAL,5J GT5JMPSTOREGT5:CMPAL,20J GT20JMPSTORE

GT20: STORE:MOV[DI],AXLOOPNEXT;****ENI)****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N*2;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第十三题:一、请编制程序,其功能是:内存中连续存放的20个八位无符号数是一个自动抄表仪抄录的20个用户某月的用水量(立方米),为了控制用水量,水费计算公式如下(X表示用水量;丫表示水费,单位为分):Y=X*70 X<=5Y=10*70+(X-10)*120 X>10例如:用水量(X): 04H,OFH,18H-水费(Y):0118H,0514H,094cH…试计算出这20个用户应缴纳的水费,结果用字(WORD)表示。部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU20RATE1EQU70RATE2EQU120DELTAEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUTLDAT',0NAME1DB'OUTPUT1.DAT',0

DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATAMOV DS, AXLEA DX, SOURCE ;数据区起始地址LEA SI,NAMEO ;原始数据文件名MOV CX.N ;字节数CALL LOAD ;从’INPUT1.DAT'中读取数据;****begin****LEA SI,SOURCELEA DI,RESULTCLDMOV CX,NMOV BL,RATE1MOV BH,RATE2NEXT: CMP AL,DELTAJ GREATMUL BLJMP STOREGREAT: MUL BHSTORE: INC SILOOP NEXT;****end****LEA DX,RESULT ;结果数据区首址LEA SI,NAME1 ;结果文件名MOV CX,N*2 ;字节数CALL SAVE ;保存结果到文件STARTCODERETENDPENDSENDSTART第十四题:一、请编制程序,其功能是:对一个由可打印ASCII字符(ASCII码20H~7FH)组成的字符串可采用下列方法进行压缩:从串首开始向后扫描,如某字符单独出现该字符不变,如某字符连续出现n次,则该字符用ESC(1BH),n,〈原字符〉三个字节来代替(假定n不超过255)。例如:原串:压缩后:41H,43H,43H,43H,43H,43H,43H,61H,00H(“ACCCCCCa”)41HJBH,06H,43H,61H,00H设内存中从SOURCE开始有一字符串,其以00H结束,长度不超过100。试编程对其进行压缩,结果存入RESULT开始的内存单元。部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的•段源程序使其完整(空白已用横线标出,每行空白•般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU100ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT*,0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS::STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUT1.DAT中读取数据;****begin****LEASI,SOURCELEADI,RESULTCLDINCDILO:CMPAL,0JEQUITMOVCX,OFFFFH;SETTHECOUNTERTOOFFFFH;字符串币:复搜索,CX=OFFFFH-nNEGex;10000H-CX-*CX;获得重复次数n

CMPCX,1JCOMPRESSMOV[SI],ALINCSIJMPCOMPRESS:MOV[SI],BYTEPTRESC_CODEMOV[SI+1],CLMOV[SI+2],ALJMPLOQUIT:MOV[SI],AL;STORETHE'OOH';****end****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第十五题:一、请编制程序,其功能是:对一个由可打印ASCII字符(ASCII码20H〜7FH)组成的字符串可采用下列方法进行压缩:从串首开始向后扫描,如某字符单独出现该字符不变,如某字符连续出现n次,则该字符用ESC(1BH),n,〈原字符》三个字节来代替(假定n不超过255)(>例如:设内存中从SOURCE开始有一用上述方法压缩的字符串,其以00H结束,长度不超过100。试编程对其进行解压缩,结果存入RESULT开始的内存单元。原串: 41H,1BH,O6H,43H,61H,OOH解压后: 41H,43H,43H,43H,43H,43H,43H,61H,00H(“ACCCCCCa”)部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白「般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU100ESCCODE:EQU27STACSEGMENTSTACKDB128DUP(?)STACENDS

DATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUTI.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SSSTACSTARTPROCFARPUSHDSXORAX,AXpushAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUT1.DAT'中读取数据;****begin****LEASI,SOURCELEADI,RESULTCLDLO:LODSBCMPAL,0JEQUITCMPAL,ESCCODEJEXPANDJMPLOEXPAND:;解压XORex,exJMPLOQUIT:STOSB;STORETHE'OOH';****EN[)****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第十六题:-、请编制程序,其功能是:对经常上下波动的数据可采用只记录峰值的数据压缩方法。即每次将采样到的当前值和前一次值比较,如数据变化方向改变(原变大现变小或原变小现变大),说明已过峰值,这时就将前一值(峰值)记录下来。例如(下例数据均为无符号数):原数据: 23H,45H,89H,67H,5CH,36H,3cH…压缩后: 23H,89H,36H…内存中从SOURCE连续存放着48个八位无符号数,假定无相邻两数相等的情况,编程按上述方法进行压缩,结果保存在RESULT开始的内存单元中。部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的•段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU40STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUT1.DAT'中读取数据;****begin****LEASI,SOURCELEADI,RESULTCLDMOVSBXORAX,AXXORBX,BXLODSB

MOVBL,[SI-2]SUBAX,BXMOVDX,AXMOVCX,N-2FILTER:XORAX,AXXORBX,BXLODSB;X[n]MOVBL,[SI-2];X[n-l]SUBAX,BX;X[n]-X[n-l];相邻两差值(AX,DX)符号位是否相同J _SKIP;相同,数据方向未变;不同,数据变化,保存峰值STOSBSKIP:LOOPFILTER;****end****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第十七题:一、请编制程序,其功能是:从10个有符号字节数据中取出负数并计算其绝对值之和(字型),然后存放在指定的内存区中,多余的空间填0。例如:内存中有: 80H,01H,02H,00H,FFH,7CH,FEH,7BH,FDH,81H结果为: 8OH,FFH,FEH,FDH,81H,O5H,01H,0OH,OOH,OOH部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT(,0

NAME1DB'OUTPUT1.DAT),0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS::DSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUn.DAT中读取数据;****begin****LEASI,SOURCELEADI,RESULTMOVDX,0MOVCX,NCLDCONT:LODSBJGEMOV[DI],ALINCDIADDDL,ALNEXT:LOOPCONTMOV[DI],DXADDDI,2MOVCX,20SUBCX,DIMOVAL,0;****END****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;字节数CALLSAVE;保存结果到文件RETSTARTENDPCSEGENDSENDSTART第十八题:一、请编制程序,其功能是:以SOURCE开始的内存区域存放着20个字节的信息,其中有ASCH字符和汉字机内码。若一个字节中最高位为0,则表示ASCII字符,若连续两个字节的每个字节最高位均为1,则为汉字机内码(表示-一个汉字)。将ASCII字符个数存入RESULT指示的单元,表示汉字的个数存入下一个单元,其后存放原来20个字节的信息。例如:内存中有30H,38H,89H,A9H,E0H,97H,61H,4AH结果为04H,02H,30H,38H,89H,A9H,E0H,97H,61H,4AH部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的•段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESC_CODIEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN+2DUP(O)NAMEODB'INPUTLDAT,0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS::STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUTLDAT中读取数据;****begin****LEASI,SOURCEMOVDI,OFFSETRESULT+2MOVCX,NMOVDX,0;ASCII字符个数在DL中,汉字个数在DH中LPST:MOVAL,[SI]MOV[DI],AL

_ AL,80HJZ LASCIIINC SIDECCXJZMOVAL,[SI]MOV[DI],ALTESTAL,80HJZINCDHJMPLPC0M1LASCII:LPC0M1:INCSIINCDILOOPLPSTREST11:LEADI,RESULTMOV,DLINCDIMOV[DI], ;****end****LEADX,RESULT ;结果数据区首址LEASI,NAME1 ;结果文件名MOVCX,N+2 ;字节数CALLSAVE ;保存结果到文件RETSTARTENDPCODEENDSENDSTART第十九题:一、请编制程序,其功能是:一故障报警系统连续集20个字节数据存于SOURCE开始的内存区域,如果数据字节中有二进制位0(0代表有故障),则记录该数据字节中0的个数,并按数据字节在前,0的个数在后的顺序存放到RESULT开始的内存区域。例如:内存中有: FEH,90H,FFH,DDH…结果为: FEH,01H,90H,06H,FFH,00H,DDH,02H-部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESCCODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN*2DUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES.AX ;置附加段寄存器LEADX,SOURCE ;数据区起始地址LEASI,NAMEO ;原始数据文件名MOVCX.N ;字节数CALLLOAD ;从'INPUT1.DAT,中读取数据;****begin****LEASI,SOURCEMOVDI,OFFSETRESULTCLDMOVDL,NLP1:;字节数计数器DLMOV[DI],ALMOVex, MOVDH,0LP2:AL,1JCINCDHLP3:LP2INCDIMOV[DI], JNZ;****END****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N*2;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第二十题:一、请编制程序,其功能是:有一抄表系统采集的数据中包括8位的窃水状态字节(一个字节记录4块水表状态),格式为:D7D6D5D4D3D2DIDOS4S3S2SIX4X3X2XI其中Si,Xi(i=l,2,3,4)分别表示第i块水表短路和断路状态位,1表示有短路或断路情况发生(表示有偷水情况),现共采集了5个字节的窃水状态,如果有窃水情况,则记录在RESULT中,记录格式为:表号,状态,表号,状态……没有短断路,则记录EOH,断路记录E1H,短路记录E2H,如0血日乩02比£014,0311E2比04凡£0}1表示第一块表断路,第二块表无窃水状态,第三块表短路,第四块表也无窃水发生。例如:内存中有:83H-结果为: 01H,E1H,O2H,E1H,03H,E0H,04H,E2H-该内存中从SOURCE开始有一字符串,其以00H结束,长度不超过100。试编程对其进行压缩,结果存入RESULT开始的内存单元。部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白「般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU5ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN*8DUP(O)NAMEODB'INPUT1.DAT',0NAME1DB(OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址

LEASI,NAMEO;原始数据文件名MOVCX,N;字节数CALLLOAD;从'INPUT1.DAT'中读取数据;****BEGIN****LEASI,SOURCEMOVDI,OFFSETRESULTMOVDH,NLPM: MOVAL,[SI]MOVBL,ALINCSIMOVCL,SHRBL,CLMOVCX,4MOVBH,0LPO: SHRAL,1;BH放水表号INCBHMOV[DI],BHJCLP1SHRBL,1JCLP2MOVDL,OEOHJMPLPCOMLPLP:LOOPJMPRET1LP1: SHRBL,1MOVDL,JMPLPCOMLP2: MOVDL,0E2HLPCOM:MOV[DI],DLJMPLPLPRET1:DECDHLPM;****end****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N*2;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDS第二十--题:一、请编制程序,其功能是:以SOURCE开始的内存区域存放着若干字节的数据,以#作为数据的结束标志。将其中的空格滤除,对每个非空格数据的最高位清0后依次存放到RESULT指示的区域,其后存放一个空格符(20H),然后存放原来的空格个数,最后仍以‘#'结束。内存中有45H,20H,87H,20H,A5H,32H,20H,20H,20H,23H结果为45H,07H,25H,32H,20H,05H,23H部分程序已给出,其中原始数据由过程LOAD从文件INPUTI.DAT中读入SOURCE开

始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的•段源程序使其完整(空白已用横线标出,每行空白•般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESCCODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB)INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX ;置附加段寄存器LEADX,SOURCE ;数据区起始地址LEASI,NAMEO ;原始数据文件名MOVCX.N ;字节数CALLLOAD ;从'INPUT1.DAT'中读取数据;****begin****LEASI,SOURCEMOVDI,OFFSETRESULTXORBL,BLAGNI:MOVAL,[SI]INCSICMPJEAL,,,JMPAGN2AGN11:INCBLJMPAGNIAGN2:CMPAL, JEDONEANDAL,7FHMOV[DI],AL

DONE:MOVAL, MOV[DI],ALINCDIMOV[DI],BLINCDIMOVAL,'#'MOV,AL;****END****LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第二十二题:一、请编制程序,其功能是:内存中连续存放着9个ASCH字符(8位二进制数表示,最高位为零),把它们转换成串行通讯中偶校验码,并计算9个偶校验码的累加码(累加值的低8位二进制数),将九个偶校验码按原序存入内存,累加码存放在此序最后。例如:内存中有:37H,38H,39H…结果为:B7H,B8H,39H…累加码部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与1O.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDB9DUP(?) ;顺序存放9个ASCII字符RESULTDBNDUP(O) ;存放结果NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACSTARTP

温馨提示

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

评论

0/150

提交评论