【计算机类职业资格】三级PC技术机试-193及答案解析.doc

上传人:unhappyhay135 文档编号:1320178 上传时间:2019-10-17 格式:DOC 页数:4 大小:29.50KB
下载 相关 举报
【计算机类职业资格】三级PC技术机试-193及答案解析.doc_第1页
第1页 / 共4页
【计算机类职业资格】三级PC技术机试-193及答案解析.doc_第2页
第2页 / 共4页
【计算机类职业资格】三级PC技术机试-193及答案解析.doc_第3页
第3页 / 共4页
【计算机类职业资格】三级PC技术机试-193及答案解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、三级 PC技术机试-193 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.编制一个程序,使其实现如下功能:将内存中连续存放的 10个十六位二进制无符号数按照从小到大的顺序排列。例如:内存中有:3456H,2345H,5643H,(假设后面的 7个数都大于 5643H)结果为: 2345H,3456H,5643H,(后面跟 7个字,按照从小到大的顺序排列)。部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUTDAT 中读入以 SOURCE开始的内存单元中。运算结果要求从 RESULT开始的内存单元存放,由过程 SAVE保存到文件

2、 OUTPUTDAT中。请填空 BEGIN和 END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令亦可,考生也可以删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序EXTRN LOAD:FAR,SAVE:FARN EOU 10SSEG SEGMENT STACKDB 256 DUP (?)SSEG ENDSDSEG SEGMENTSOURCE DW N DUP (?)RESULT DW N

3、 DUP (0)NAME0 DB INPUTDAT,0NAME1 DB OUTPUTDAT,0DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DSEGMOV DS,AXLEA DX,SOURCELEA SI,NAME0MOV CX,N*2CALL LOAD; * BEGIN *MOV SI,OFFSET SOURCEMOV DI, (1) MOV CX,NAGAIN0: MOV AX,SIMOV DI,AXADD SI,2ADD DI,2LOOP AGA

4、IN0CLDMOV BX,N-1AGAIN1: MOV SI,OFFSET RESULTMOV CX,BXAGAIN2: LODSWCMP SI, (2) JAE NEXT(3) MOV SI-2,AXNEXT: LOOP (4) DEC BXJNZ (5) ; * END *LEA DX,RESULTLEA SI,NAME1MOV CX,N*2CALL SAVERETSTART ENDPCSEG ENDSEND START(分数:100.00)_三级 PC技术机试-193 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.编制一个程序,使其实

5、现如下功能:将内存中连续存放的 10个十六位二进制无符号数按照从小到大的顺序排列。例如:内存中有:3456H,2345H,5643H,(假设后面的 7个数都大于 5643H)结果为: 2345H,3456H,5643H,(后面跟 7个字,按照从小到大的顺序排列)。部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUTDAT 中读入以 SOURCE开始的内存单元中。运算结果要求从 RESULT开始的内存单元存放,由过程 SAVE保存到文件 OUTPUTDAT中。请填空 BEGIN和 END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指

6、令亦可,考生也可以删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序EXTRN LOAD:FAR,SAVE:FARN EOU 10SSEG SEGMENT STACKDB 256 DUP (?)SSEG ENDSDSEG SEGMENTSOURCE DW N DUP (?)RESULT DW N DUP (0)NAME0 DB INPUTDAT,0NAME1 DB OUTPUTDAT,0DSEG ENDSCSEG SEGMENTASSUME

7、CS:CSEG,DS:DSEG,SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DSEGMOV DS,AXLEA DX,SOURCELEA SI,NAME0MOV CX,N*2CALL LOAD; * BEGIN *MOV SI,OFFSET SOURCEMOV DI, (1) MOV CX,NAGAIN0: MOV AX,SIMOV DI,AXADD SI,2ADD DI,2LOOP AGAIN0CLDMOV BX,N-1AGAIN1: MOV SI,OFFSET RESULTMOV CX,BXAGAIN2: LODSWCMP SI, (

8、2) JAE NEXT(3) MOV SI-2,AXNEXT: LOOP (4) DEC BXJNZ (5) ; * END *LEA DX,RESULTLEA SI,NAME1MOV CX,N*2CALL SAVERETSTART ENDPCSEG ENDSEND START(分数:100.00)_正确答案:(1)OFFSET RESULT (2)AX (3)XCHG SI,AX (4)AGAIN2 (5)AGAIN1)解析:解析从整个程序可以看出,程序所采用的方法是先将从 SOURCE开始的内存单元的内容送到从 RESULT开始的内存单元中,然后对从 RESULT内存单元开始的数据进行排序

9、程序第一个循环的作用是完成数据传送,由此可以判断传送到 DI中的应该是 RESm。丁存储单元的偏移地址,即第一个空白处应填 OFFSET RESULT。当数据全部传送到从 RESULT开始的单元以后,便对其进行从小到大的排序。在排序的过程中,使用的是取字符串指令 LODSW,所以比较的数应该在 AX寄存器中,即第二个空应填 AX。接下来的程序实现的是比较功能,程序采用的是逐项比较的算法,当后面的元素大于前面的元素时,直接进行下一次循环,而当后面的元素较小的话,就需要和前面的元素进行交换,因此需要填写的指令是 XCHGSI,AX。当程序执行完一次排序以后,最大的数已经在最后面,因此下一次只需要对前 N-1个数进行比较,并且循环应该从第一个数据开始,所以后两个空应该分别填 AGAIN2和 AGAIN1。

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

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1