[计算机类试卷]PC技术机试模拟试卷72及答案与解析.doc

上传人:fatcommittee260 文档编号:493489 上传时间:2018-11-28 格式:DOC 页数:4 大小:29KB
下载 相关 举报
[计算机类试卷]PC技术机试模拟试卷72及答案与解析.doc_第1页
第1页 / 共4页
[计算机类试卷]PC技术机试模拟试卷72及答案与解析.doc_第2页
第2页 / 共4页
[计算机类试卷]PC技术机试模拟试卷72及答案与解析.doc_第3页
第3页 / 共4页
[计算机类试卷]PC技术机试模拟试卷72及答案与解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、PC技术机试模拟试卷 72及答案与解析 一、程序设计题 1 请编制程序,其功能是:对一个由可打印 ASCII字符 (ASCII值为 20H 7FH)组成的字符串可采用下列方法进行压缩:从串首开始向后扫描,如某字符单独出现则该字符不变,如某字符连续出现 n次,则该字符用 ESC(1BH), n,原字符三个字节来代替 (假定 n不超过 255)。 设内存中从 SOURCE开始有一用上述方法压缩的字符串,其以 OOH结束,解压后长度不超过 100。试编程对其解压缩,结果存入 RESULT开始的内存单元。 例如: 原串: 41H, 1BH, 06H, 43H, 61H, 00H 解压缩后: 41H,

2、43H, 43H, 43H, 43H, 43H, 43H, 61H,OOH(“ACCCCCCa“) 部分程序已给出,原始数据由过程 LOAD从文件 INPUT.DAT中读入 SOURCE开始的内存单元中,结果要求从 RESULT开始存放,由过程 SAVE保存到文件OUTPUT.DAT中。 请填空 BEGIN和 END之间已给出的源程序使其完整,空白己用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除 BEGIN和 END之间原有的代码并自行编写程序片段来完成所要求的功能。 对程序必须进行汇编,并与 IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程

3、序中存在错误之处,请加以修改。 【试题程序】 EXTRN LOAD:FAR, SAVE:FAR N EQU 100 ESC_CODE EQU 27 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESULT DB N DUP(0) NAME0 DB INPUT.DAT,0 NAME1 DB OUTPUT.DAT,0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STAC START PROC FAR PUSH DS XOR AX,AX

4、PUSH AX MOV AX,DATA MOV DS, AX MOV ES, AX ;置附加段寄存器 LEA DX, SOURCE ;数据区起始地址 LEA SI, NAME0 ;原始数据文件名起始地址 MOV CX, N ;字节 CALL LOAD ;从 “INPUT.DAT“ 中读取数据 * BEGIN * LEA SI, SOURCE LEA DI, RESULT CLD LO: LODSB CMP AL, 0 JE QUIT CMP AL, ESC_CODE J (1) EXPAND (2) JMP L0 EXPAND: (3) ;解压缩 XOR CX, CX (4) (5) (6)

5、(7) JMP LO QUIT: STOSB ;STORE THE 00H * END * LEA DX, RESULT ;结果数据区首址 LEA SI, NAME1 ;结果文件名起始地址 MOV CX,N ;字节数 CALL SAVE ;保存结果到 “output.dat“ 文件 RET START ENDP CODE ENDS END START PC技术机试模拟试卷 72答案与解析 一、程序设计题 1 【正确答案】 (1)E (2)STOSB (3)CID (4)MOV CL, SI (5)MOV AL, SI+1 (6)REP STOSB (7)ADD SI, 2 【试题解析】 本题是一道数据插入题,其中本题采用的算法是首先从原始数据区读取一个字节,判断是否为结束标志,若是结束标志,则直接送至结果数据区并结束处理,若不是结束标志则再次判断是否是压缩标志,是则读取下一个字节,然后将其值送 CL,再读取下一个字节到 AL,以 CL为计数器重复将刚才读取的数据写入结果数据区,然后继续读取下一个数据开始进行判断,直到发现结束标志为止。反之则直接将该字符送到结果数据区。 程序中使用串处理指令 LODSB来完成 读取数据和修改原始数据区偏移地址的目的:使用串处理指令 STOSB来完成写入数据和修改结果数据区偏移地址的目的;使用 CL做计数器和指令 REP完成循环处理。

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

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

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