PC技术机试模拟试卷18(题后含答案及解析)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PC技术机试模拟试卷18(题后含答案及解析) 题型有:1. 程序设计题
程序设计题
1.请编制程序PROG1.ASM,其功能是:内存中从SOURCE开始连续存放着20个字(WORD),试统计每个字中二进制位为1的个数。
结果以字节存放。
例如:内存中有139CH,518CH,1489H,…,结果为07H,08H,05H,….部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE 开始的内存单元中。
运算结果要求从RESULT开始存放,由过程SA VE保存到文件OUTPUT1.DAT中。
填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ连接生成PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。
注意:源程序非填空部分可能存在个别非法指令,考生阅读源程序或调试该程序时若发现这些非法指令,请加以修改! EXTRNLOAD:FAR,SA VE:FAR NEQU20 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DW N DUP(?) RESULT DB NDUP(0) NAMEO DB ‘INPUT1.DAT’,0 NAME1 DB ‘OUTPUT1.DAT’,0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XORAX,AX PUSH AX MOV AX,DATA MOVDS,AX LEADX,SOURCE ;数据区起始地址LEAS1,NAMEO;原始数据文件名MOVCX,N * 2;字节数CALL LOAD ;从INPUT1.DAT中读取数据;* * * * BEGIN * * * * LEASI,SOURCE LEADI,RESULT CLD MOVDX,N LOOP0:LODS _____ _______ MOVCX,16 LOOP1: ROLAX,1 J_____ NEXT INCBX NEXT:LOOP _____ MOV[D1],BL ______ DECDX JNZLOOP0 ;* * * * END * * * * LEADX,RESUIT ;结果数据区首址LEASI,NAME1 ;结果文件名MOVCX,N ;结果字节数CALL SA VE ;保存结果到文件RET START ENDP CODE ENDS ENDSTART
正确答案:;* * * * BECIN * * * * LEA SI,SOURCE LEA DI,RESULT CI,D MOV DX,N LOOP0:LODS SOURCE XOR BX,BX MOV CX,16 LOOP1:ROL AX,1 JNC NEXT INC BX NEXT:LOOP LOOP1 MOV [DI],BL INC DI DEC CX JNZ LOOP0 ;* * * * END * * * *。