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

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

1、PC技术机试模拟试卷 45及答案与解析 一、程序设计题 1 请编制程序,其功能是:以 SOURCE开始的内存区域存放着 N个字节的压缩BCD码,将每个压缩 BCD码转换成两个 ASCII值,并在每个 ASCII值的最高位增加偶校验位,结果存放在 RESULT指示的内存区域。 例如: 原压缩 BCD码: 26H, 75H, 91H, 33H 结果为: B2H, 36H, B7H 部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求 从 RESULT开始存放,由过程 SAVE保存到文件 OUTPUT1.DAT中。 请填空 BEG

2、IN和 END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分 (指令助记符或操作数 ),也可以填入功能相当的多条指令,或删去 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 DUP

3、(0) RESULT DB 2*N DUP(0) NAME0 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 XOR AX, AX PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX ;置附力,段寄存器 LEA DX, SOURCE ;数据区起始地址 LEA SI, NANE0 ;原始数据文件名 MOV CX, N ;字节数 CALL LOAD ;从 INPUT1.

4、DAT 中读取数据 ; *BEGIN * LEA SI, SOURCE MOV DI, OFFSET RESULT MOV CX, N SERCH1: MOV (1) MOV AH, AL AND AH, 0FH AND AL, 0FOH PUSH CX MOV CL, 4 (2) (3) ADD AL, 30H (4) OR AL, 80H SERCH2: MOV DI, AL INC DI (5) JP SERCH3 OR AH, 80H SERCH3: MOV DI, AH INC DI INC SI (6) SERCH1 ; * END * LEA DX, RESULT ; 结果数据区

5、 首址 LEA SI, NAMEl ;结果文件名起始地址 MOV CX, 2*N ;字节数 CALL SAVE ;保存结果到, OUTPUT1.DAT,文件中 RET START ENDP CODE ENDS END START PC技术机试模拟试卷 45答案与解析 一、程序设 计题 1 【正确答案】 (1)AL, SI (2)SHRAL, CL (3)POPCX(4)JP SERCH2 (5)ADDAH, 30H (6)LOOP 【试题解析】 此程序要实现两个功能:将 N个字节的压缩 BCD码转换成 2N个ASCII值,并在每个 ASCII值的最高位增加偶校验位。这里考查压缩 BCD码与AS

6、CII码之间的转换,特别是对 SHR指令的理解和状态标志位 PF的运用。 程序的基本结构如下: 堆栈段定义了一个 128字节的堆栈区。堆栈段下面是数据段。数据段中定 义了四个字节型变量:原始数据区 SOURCE、结果数据区 RESULT、原始数据文件名NAME0、结果数据文件名 NAME1。数据段下面是代码段,在代码段开始告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器 CS、 DS、 SS。 先将原始数据偏移地址装入到 SI中,结果数据偏移地址送 DI。 CX赋初值为N,用于控制循环处理的次数。 SERCH1段的开始要填写第 (1)空,将 SI中的内容传送到 AL。所以第 (1)空填写“

7、AL, SI”。将 AL暂存在 AH中。接着用两条逻辑 “与 ”指令,将 AH的高四位屏蔽掉, 将 AL的低四位屏蔽掉。 CX先压入堆栈中,再将 CL赋值为 4,用以控制下面的移位指令的移位位数。将 AL逻辑右移四位,则 AL的原高四位数字移入到低四位,高四位现在变成了 0。第 (2)空填写 “SHRAL, CL”。 有压入就必有弹出,与前面的 “PUSH CX”指令相对应,第 (3)空填写 “POP CX”。然后将 AL中的值加 30H,就将压缩 BCD码的高四位转换成相应的 ASCII字符了。再由状态标志位 PF求 AL的偶校验位。若 PF=1,说明 AL中有偶数个1,则偶校验位为 0,

8、AL的最高位不变,转向 SERCH2段。否则, PF=0,则 AL的偶校验位为 1,将偶校验位 1加到 AL的最高位,用指令 “ORAL, 80H”来实现,所以第 (4)空填写 “JPSERCH2”。 SERCH2段,将转换后的结果 AL存入到 DI中, DI加 1。接着将压缩 BCD码的低四位 (已存放在 AH中 )转换成 ASCII值,所以第 (5)空填写 “ADDAH, 30H”。接下来两条指令,是同求高四位的偶校验位一样,来求低四位的偶校验位。 SERCH3段,将转换后的结果 AH存放到 DI中, DI地址加 1, SI地址加 1,然后循环到 SERCH1入口处,继续处理下一个压缩 BCD码,所以第 (6)空填写“LOOP”。

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

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

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