三级PC上机题库南开100题.docx

上传人:b****2 文档编号:18140974 上传时间:2023-04-24 格式:DOCX 页数:313 大小:75.09KB
下载 相关 举报
三级PC上机题库南开100题.docx_第1页
第1页 / 共313页
三级PC上机题库南开100题.docx_第2页
第2页 / 共313页
三级PC上机题库南开100题.docx_第3页
第3页 / 共313页
三级PC上机题库南开100题.docx_第4页
第4页 / 共313页
三级PC上机题库南开100题.docx_第5页
第5页 / 共313页
点击查看更多>>
下载资源
资源描述

三级PC上机题库南开100题.docx

《三级PC上机题库南开100题.docx》由会员分享,可在线阅读,更多相关《三级PC上机题库南开100题.docx(313页珍藏版)》请在冰豆网上搜索。

三级PC上机题库南开100题.docx

三级三级PC上机题库南开上机题库南开100题题三级PC南开100题第一题:

一、请编制程序,其功能是:

将内存中由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在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链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRNLOAD:

FAR,SAVE:

FARNEQU40STACSEGMENTSTACKDB128DUP(?

)STACENDSDATASEGMENTSOURCEDBNDUP(0)RESULTDBN+2DUP(0)NAME0DBINPUT1.DAT,0NAME1DBOUTPUT1.DAT,0NDATADBNDUP(0)PDATADBNDUP(0)DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA,SS:

STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAME0;原始数据文件名MOVCX,N;字节数CALLLOAD;从INPUT1.DAT中读取数据;*BEGIN*LEASI,SOURCEMOVDI,OFFSETPDATA;PDATA为正数数组存放缓冲区首址MOVBX,OFFSETNDATA;NDATA为负数数组存放缓冲区首址XORDX,DXMOVCX,NCLDMAIN1:

LODSBTESTAL,00HJZMAIN2INCDH;-MOVBX,ALINCBXJMPMAIN3MAIN2:

INCDLMOVDI,AL;+INCDIMAIN3:

LOOPMAIN1LEASI,PDATALEADI,RESULTMOVDI,DLINCDIXORCX,CXMOVCL,DLMAIN4:

MOVAL,SIMOVDI,ALINCDIINCSILOOPMAIN4_MOVDI,DHINCDIXORCX,CXMOVCL,DHMOVBX,OFFSETNDATAMAIN5:

MOVAL,BXMOVDI,ALINCDIINCBXLOOPMAIN5;*END*LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N+2;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第二题:

一、请编制程序,其功能是:

内存中连续存放着10个无符号8位格雷码表示的数,现将此十个数转换成十个8位二进制数,结果存入内存,其转换方法为二进制数的最高位D7与格雷码的最高位G7相同,二进制数的其余七位DK(k=6,0)分别为格雷码的位GK(k=6,0)与二进制数的位DK+1(k=6,0)异或的结果。

例如:

内存中有00H,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H结果为00H,02H,32H,45H,08H,19H,67H,03H,90H,85H部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。

运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRNLOAD:

FAR,SAVE:

FARNEQU10STACSEGMENTSTACKDB128DUP(?

)STACENDSDATASEGMENTSOURCEDBNDUP(?

);顺序存放10个字节数RESULTDBNDUP(0);存放结果NAME0DBINPUT1.DAT,0NAME1DBOUTPUT1.DAT,0DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA,SS:

STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAME0;原始数据文件名MOVCX,N;字节数CALLLOAD;从INPUT1.DAT中读取数据;*BEGIN*LEASI,SOURCELEADI,RESULTMOVCX,10AGN0:

MOVAL,SIPUSHCXMOVCX,8MOVBX,0AGN1:

MOVAH,0SHLBL,1RCLAL,1RCLAH,1CMPAH,BHJNESETONEJMPNEXTSET_ONE:

ORBL,01HNEXT:

MOVBH,BLANDBH,01HLOOPAGN1POPCXMOVDI,BLINCSIINCDILOOPAGN0;*END*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之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRNLOAD:

FAR,SAVE:

FARNEQU20STACSEGMENTSTACKDB128DUP(?

)STACENDSDATASEGMENTSOURCEDWNDUP(?

)RESULTDWNDUP(0)NAME0DBINPUT1.DAT,0NAME1DBOUTPUT1.DAT,0DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA,SS:

STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAME0;原始数据文件名MOVCX,N*2;字数CALLLOAD;从INPUT1.DAT中读取数据;*BEGIN*LEASI,SOURCELEADI,RESULTMOVCX,NNEXT0:

MOVAX,SIMOVDI,AXADDSI,2ADDDI,2LOOPNEXT0CLDMOVBX,N-1MAL1:

LEASI,RESULTMOVCX,BXNEXT:

LODSWCMPSI,AXJAECONTXCHGSI,AXMOVSI-2,AXCONT:

LOOPNEXTDECBXJNZMAL1;*END*LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N*2;结果字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第四题:

一、请编制程序,其功能是:

内存中连续存放着24个无符号二进制字序列,字的最高位为000,此序列对应某一信号在一段时间内的连续变化,现对第21个二进制字前的20个二进制字进行移动平均处理,其方法为:

将要处理的字Xi用以它为开始的连续五个字的平均数(Xi+Xi+1Xi+2Xi+3Xi+4)/5代替(余数舍去),得到新的20个无符号二进制字序列,结果存入内存。

例如:

内存中有0100H,0200H,0300H,0400H,0500H,0600H结果为0300H,0400H部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。

运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRNLOAD:

FAR,SAVE:

FARNEQU24STACSEGMENTSTACKDB128DUP(?

)STACENDSDATASEGMENTSOURCEDWNDUP(?

);顺序存放24个字RESULTDW20DUP(0);存放结果NAME0DBINPUT1.DAT,0NAME1DBOUTPUT1.DAT,0DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA,SS:

STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAME0;原始数据文件名MOVCX,N*2;字数CALLLOAD;从INPUT1.DAT中读取数据;*BEGIN*MOVDI,0MOVSI,0MOVCX,20MOVBX,5AGN0:

MOVAX,SOURCESIPUSHSIPUSHCXMOVCX,4AGN1:

INCSIINCSIADDAX,SOURCESILOOPAGN1MOVDX,0DIVBXMOVRESULTDI,AXINCDIINCDIPOPCXPOPSIINCSIINCSILOOPAGN0;*END*LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,40;结果字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第五题:

一、请编制程序,其功能是:

内存中从SOURCE开始连续存放着21个八位有符号数(补码),其相邻两数之间差值不超过-8至7。

对这种变化缓慢的数据可采用差分方法进行压缩。

即第一个数据不变,其后的数据取与前一数据的差值并用四位二进制补码表示,两个差值拼成一个字节,前一个差值放在高四位,后一个差值放在低四位。

例如:

原数据(Xn):

23H,27H,2AH,29H,22H压缩后(Yn):

23H,43H,F9H编程按上述方法进行压缩,结果保存在RESULT开始的内存单元中。

部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。

运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRNLOAD:

FAR,SAVE:

FARNEQU10STACSEGMENTSTACKDB128DUP(?

)STACENDSDATASEGMENTSOURCEDB2*N+1DUP(?

)RESULTDBN+1DUP(0)NAME0DBINPUT1.DAT,0NAME1DBOUTPUT1.DAT,0NDATADBNDUP(0)PDATADBNDUP(0)DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA,SS:

STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;数据区起始地址LEASI,NAME0;原始数据文件名MOVCX,2*N+1;字节数CALLLOAD;从INPUT1.DAT中读取数据;*BEGIN*LEASI,SOURCELEADI,RESULTCLDMOVSB;Y0=X0XORBX,BX;FLAG=0MOVDX,N*2;COUNTERCOMPRESS:

LODSB;Xn-Xn-1SUBAL,SI-2;FLAG=NOTFLAGXORBX,0FFHJZLOW_HEXMOVCL,4SHLAL,CLMOVAH,ALJMPNEXTLOW_HEX:

ANDAL,0FHORAL,AHSTOSBNEXT:

DECDXJNECOMPRESS;*END*LEADX,RESULT;结果数据区首址LEASI,NAME1;结果文件名MOVCX,N+1;字节数CALLSAVE;保存结果到文件RETSTARTENDPCODEENDSENDSTART第六题:

一、请编制程序,其功能是:

将内存中存放着20个数字09之间的ASCII字符(包括数字0和9的ASCII字符)或SP字符(20H),请将数字09之间的ASCII字符(包括数字0和9的ASCII字符)转换为相应的八位二进制数,并将SP字符转换为$字符(24H)。

将按上述方法处理后得到的20个字节存入内存中。

例如:

内存中有20H(SP),30H(0),31H

(1),31H

(1),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(0)NAME0DBINPUT1.DAT,0NAME1DBOUTPUT1.DAT,0DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA,SS:

STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAME0;原始数据文件名MOVCX,N;字节数CALLLOAD;从INPUT1.DAT中读取数据;*BEGIN*MOVSI,0MOVDI,0MOVCX,NCHAN:

MOVAL,SOURCESISUBAL,20HJZCHANGESUBAL,10HMOVRESULTDI,ALINCDIINCSIDECCXJZEXITJMPCHANCHANGE:

MOVRESULTDI,24HINCDIINCSIJMPCHANEXIT:

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字符表示在后)与原字符串中字符*之后的两个ASCII字符相同,则将原字符串原样保存;反之,则将原字符串中的所有字符(共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,0DH,0AH,55H结果为23H,46H,41H,30H,2EH,34H,3DH,31H,2AH(*),32H,31H(校验正确,该字符串原样保持),0DH,0AH,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H(校验错,整个字符串用字符!

代替)。

部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。

运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRNLOAD:

FAR,SAVE:

FARNEQU26STACSEGMENTSTACKDB128DUP(?

)STACENDSDATASEGMENTSOURCEDBN+4DUP(?

)RESULTDBNDUP(0)HHDB2DUP(0)NAME0DBINPUT1.DAT,0NAME1DBOUTPUT1.DAT,0DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA,SS:

STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;数据区起始地址LEASI,NAME0;原始数据文件名MOVCX,N+4;字节数CALLLOAD;从INPUT1.DAT中读取数据;*BEGIN*MOVSI,0MOVDI,0MOVBX,2;两个ASCII字符串REPEAT:

MOVAH,0SEARCH:

MOVAL,SOURCESIINCSICMPAL,#JNZSEARCHMOVRESULTDI,ALINCDISEARCH1:

MOVAL,SOURCESIINCSICMPAL,*JEASCIIMOVRESULTDI,ALINCDIXORAH,ALJMPSEARCH1ASCII:

MOVRESULTDI,ALINCDIPUSHDIMOVDI,0MOVDH,2MOVDL,AH;异或结果暂存在DL中MOVCL,4;先将异或结果高4位转换成ASCII字符SHRAH,CL;本行开始的4行语句将一个十六进制数转换为ASCII码CHANGE:

CMPAH,10JLADD_0ADDAH,A-0-10ADD_0:

ADDAH,0MOVHHDI,AHINCDIDECDHJZEXTMOVAH,DL;再将异或结果低4位转换成ASCII字符ANDAH,0FHJMPCHANGEEXT:

POPDIMOVAL,SOURCESIMOVRESULTDI,ALINCSIINCDIMOVAH,SOURCESIMOVRESULTDI,AHINCSIINCDIMOVDL,HHMOVDH,HH+1CMPAX,DXJNZERRMOVAL,0DH;校验正确MOVRESULTDI,ALINCDIMOVAL,0A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1