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

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

1、三级 PC 技术机试-191 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序 ex1.ASM,其功能是:内存中连续存放着 20 个十进制数字的 ASC字符,把它们转换成 10个字节的压缩型(组合型)BCD 码。例如:内存中有:31H(1),32H(2),33H(3),34H(4)(共 20 个字节)结果为:21H,43H,(共 10 个字节)部分程序已经给出,其中原始数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中,运算结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件 O

2、UTPUT1.DAT 中。填空 BEGIN 和 END 之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去 BEGIN 和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 连接产生 ex1.exe 可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。试题程序 EXTRN LOAD:FAR,SAVE:FARN EQU 10STAC SEGMENT STACKDB 128 DUB(?)STAC ENDSDATA SEGMENTSOURCE DB N*2 Dup(?)R

3、ESULT DB N DUP(0)NAME0 DB INPUT1.DAT,0NAMEl DB OUTPUT1.DAT,0DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXORAX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA DX,SOURCE ;数据区起始地址LEA SI,NAME0 ;原始数据文件名MOV CX,N*2 ;字节数CALL LOAD ;从INPUT.DAT中读取数据;*BEGIN*LEA SI,SOURCELEA DI,RESULTMOV CX,

4、NCLDNEXT:LODS _ANDAL, _MOVBL,AL _LODS _PUSH _MOV CL, _SAL AL,CLPOP _ADDAL, _STOS _LOOP NEXT;*END*LEA DX,RESULT ;结果数据区首址LEA SI,NAME1 ;结果文件名MOV CX,N ;结果字节数CALL SAVE ;保存结果到文件RETSTART ENDPCODE ENDSEND START(分数:100.00)_三级 PC 技术机试-191 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序 ex1.ASM,其功能是:内存

5、中连续存放着 20 个十进制数字的 ASC字符,把它们转换成 10个字节的压缩型(组合型)BCD 码。例如:内存中有:31H(1),32H(2),33H(3),34H(4)(共 20 个字节)结果为:21H,43H,(共 10 个字节)部分程序已经给出,其中原始数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中,运算结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件 OUTPUT1.DAT 中。填空 BEGIN 和 END 之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去 BEG

6、IN 和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 连接产生 ex1.exe 可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。试题程序 EXTRN LOAD:FAR,SAVE:FARN EQU 10STAC SEGMENT STACKDB 128 DUB(?)STAC ENDSDATA SEGMENTSOURCE DB N*2 Dup(?)RESULT DB N DUP(0)NAME0 DB INPUT1.DAT,0NAMEl DB OUTPUT1.DAT,0DATA ENDSCODE SEGMENTASSUME

7、CS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXORAX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA DX,SOURCE ;数据区起始地址LEA SI,NAME0 ;原始数据文件名MOV CX,N*2 ;字节数CALL LOAD ;从INPUT.DAT中读取数据;*BEGIN*LEA SI,SOURCELEA DI,RESULTMOV CX,NCLDNEXT:LODS _ANDAL, _MOVBL,AL _LODS _PUSH _MOV CL, _SAL AL,CLPOP _ADDAL, _STOS _LOOP

8、NEXT;*END*LEA DX,RESULT ;结果数据区首址LEA SI,NAME1 ;结果文件名MOV CX,N ;结果字节数CALL SAVE ;保存结果到文件RETSTART ENDPCODE ENDSEND START(分数:100.00)_正确答案:(;*BEGIN*LEA SI,SOURCE ;原始数据区的偏移地址放入 SILEA DI,RESULT ;结果数据区的偏移地址放入 DIMOV CX,N ;控制循环次数CLD ;方向标志 DF=0,增量方向NEXT:LODSB ;按字节读入低地址字符串ANDAL,0FH ;变为非组合 BCD 码MOV BL,AL ;暂时保存LODS

9、B ;按字节读入高地址字符串PUSH CX ;保存 CX 的内容(循环判断条件)MOV CL,4SAL AL,CL ;将高字节变为非组合 BCD 码POP CXADDAL, BL ;高低位 BCD 码拼成组合 BCD 码STOSBLOOP NEXT;*END*)解析:解析 本题主要考查将 ASC字符变为组合 BCD 码,考生需要注意高字节的 ASC码存放在高 4 位,低字节的 ASC码存放在低 4 位。本题属于码制之间的转换,需要了解 ASC和 BCD 码之间的相关转换的知识。将 ASC字符变为非组合 BCD 码只需要用逻辑“与”操作使 ASC字符的高 4 位变为 0 即可达到目的。本题的难点在于如何将两个 ASC码变为组合 BCD 码。

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

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

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