1、PC技术机试模拟试卷 66及答案与解析 一、程序设计题 1 请编制程序,其功能是:内存中连续存放着 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之间已给出的源
2、程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去 BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与 IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。 【试题程序】 EXTRN LOAD:FAR, SAVE:FAR N EQU 10 STAC SEGMENT STACK DB 128 DUP (?) STAC ENDS DATA SEGMENT SOURCE DB N*2 DUP(?) RESULT DB N DUP(0) NAME0 DB INPUT1.D
3、AT,0 NAME1 DB OUTPUT1.DAT,0 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ; 数据区起始地址 LEA SI,NAME0 ; 原始数据文件名 MOV CX, N*2 ; 字节数 CALL LOAD ; 从 “INPUT1.DAT“中读取数据 ; * BEGIN * LEA SI,SOURCE LEA DI,RESULT MOV CX,N NEXT
4、 MOV (1) ,SI (2) AND AL, (3) MOV BL,AL (4) ADD SI,2 PUSH (5) MOV CL, (6) SAL AL,CL POP (7) ADD AL, (8) MOV (9) ,AL (10) LOOP NEXT ; * END * LEA DX,RESULT ; 结果数据区首址 LEA SI,NAME1 ; 结果文件名 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START PC技术机试模拟试卷 66答 案与解析 一、程序设计题 1 【正确答案】 (1)AX (2) MOV BH,AH (3) 0FH (4) MOV AL (5) CX (6) 4 (7) CX (8) BL (9) DI (10) INC DI 【试题解析】 本题主要考查怎样将数字的 ASC 字符进行压缩成 BCD码。题目中所提供的程序是每次读取两个数字字符至 AX,分别对这两个字符进行处理,AL取低 4位并存入 BL中, AH左移 4位,与此同时正好把高 4位去掉并存入 AL中,最后将 AL和 BL加在一起并存,放到结果数据区。