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

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

1、PC 技术机试模拟试卷 2及答案与解析 一、程序设计题 1 根据 16位逻辑变量 L的内容对内存单元中连续存放的十六个字符的数组SOURCE作如下处理: (1)若 L的第 i位为 1,将 SOURCEi的最高位置加偶校验位 (2)若 L的第 i位为 0, SOURCEi不变 例如: L 0005 转换之前: 67H, 61H, 4EH, 38H 转换之后: E7H, 61H, 4EH, 38H 部分程序已经在 PROG1.ASM中给出,请填空 BEGIN到 END之间已经给出的源程序,使其完整 (空白已经用横线标 出,每行空白一般只需要一条指令,但功能相当的多条指令亦可 )或删除 BEGIN与

2、 END之间的原有代码并自行编写程序片段完成所需的功能。 原有数据由过程 LOAD从文件 INPUT1.DAT中读入 SOURCE开始的内存单元中,结果要求从 RESULT开始存放,由 SAVE保存到 OUTPUT1.DAT文件。 对程序必须进行汇编,并与 IO.OBJ 连接产生 PROG1.EXE执行文件,最终产生运行结果 (无结果或结果不正确均不得分 )。 部分源程序如下: EXTRN LOAD:FAR,SAVE:FAR N EQU 16 STAC SEGMENT STACK DB 128 DUP (?) STAC ENDS DATA SEGMENT L DW ? SOURCE DB N

3、DUP(?) RESULT DB 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 LEA DX,L ; 数据区起始地址 LEA SI, NAME0 ; 原始数据文件名 MOV CX,2 + N ; 字节数 CALL LOAD ; 从 “INPUT1.DAT“中读取数据 * BEGIN * LEA

4、SI, SOURCE LEA DI, RESULT MOV CX,N MOV DX, (1) LO: MOV AL, SI (2) L,DX JZ STORE AND AL,AL (3) STORE (4) STORE: MOV DI,AL INC SI INC DI (5) LOOP LO * END * LEA DX,RESULT ; 结果数据区首地址 LEA SI, NAME1 ; 结果文件名 MOV CX,N ; 结果字节数 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START 相关知识: 测试指令 指令格式: TEST R, R

5、或 TEST R, M或 TEST M, R或 TEST R, I或 TEST M, R(其中 R为寄存器, M为内存变量, I为立即数 )。 测试指令将两个操作数进行逻辑乘操作,但并不把结果写回目的操作数,我们若需要知道某个寄存器中第 i位是否为 1,可以与一个立即数 (这个立即数的第 i位为1,其他位为 0)进行 TEST运算,结果为 0,则被测试位为 0,否则被测试位为 1。 测试寄存器中 1的个数的奇偶性。 可以将这个寄存器进行不改变其内容的逻辑乘运算,然后查看一下奇偶标志位即可。 对寄存器的内容进行位操作 利用 “AND”、 “OR”运算可对寄存器或某个内存单元中相应的清 0或置 1

6、。 编程思路: 第一步:分析本程序要求完成的功能。 本程序要求完成以下功能: (1)从数据文件 INPUT1.DAT中读取 16个字符存放在 SOURCE开始的内存单元中。 (2)将 SOURCE开始的 16个字符按逻辑尺 L的内容决定是否在字符的最高位置1,然后依次放在 RESULT开始的内存单元中。 (1)将处理之后的字符串存入到 OUTPUT1.DAT。 第二步:用相应程序汇编实现其功能。 (1)数据的读取和存入题目中已经给出,只要完成 16个字符的最高位置 1操作即可。 (2)对于一个数组的排序操作可按下面的方法进行。从 0到 15依次取得逻辑尺 L的第 i位的值,若为 0,则不对 S

7、OURCEi作操作;否则,计算 SOURCEi中 1的个数,若为奇数则在 SOURCEi的最高位置 1,否则不作操作,然后将其存放在RESULT开始的内存单元中。 这里我们仍然采用填空,而不重新编写程序, 采用填空的方式解题对于我们阅读程序的能力会有所帮助。通过阅读程序我们发现程序是采用循环的方式测试一个数的第 i位是否为 1(要么将被测试数进行移位操作,然后与 1进行 TEST运算,要么将 1进行移位操作,与被测试数进行 TEST运算均可获得结果 ),然后根据第 i位是否为 1加偶校验位。 PC 技术机试模拟试卷 2答案与解析 一、程序设计题 1 【正确答案】 (1) 1 (2) TEST (3) JP (4) OR AL, 80H (5) SHR L, 1 或 SHL DX, 1

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

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

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