【计算机类职业资格】三级PC技术机试-166及答案解析.doc

上传人:arrownail386 文档编号:1320151 上传时间:2019-10-17 格式:DOC 页数:4 大小:29.50KB
下载 相关 举报
【计算机类职业资格】三级PC技术机试-166及答案解析.doc_第1页
第1页 / 共4页
【计算机类职业资格】三级PC技术机试-166及答案解析.doc_第2页
第2页 / 共4页
【计算机类职业资格】三级PC技术机试-166及答案解析.doc_第3页
第3页 / 共4页
【计算机类职业资格】三级PC技术机试-166及答案解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、三级 PC技术机试-166 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.编制一个程序,其功能为:内存中以 8位无符号数形式连续存放着 10个数据,这数据来自于一个自动抄表系统记录的 10个用户某月天然气的使用量(立方米),天然气费计算公式如下(其中,X 表示天然气用量,Y 表示应该天然气费):a)YX80 X8b)Y880+(X-8)120 X8计算每个用户需要交的天然气费,结果用字表示,并将结果存入指定单元。例如:用天然气量为:05H,07H,12H则天然气费为:0190H,0348H,0780H部分程序已经给出,其中原始数据由过程

2、LOAD从文件 INPUTDAT 中读入以 SOURCE开始的内存单元中。运算结果要求从 RESULT开始的内存单元存放,由过程 SAVE保存到文件 OUTPUTDAT 中。请填空 BEGIN和 END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序TRN AD:FAR,SAVE:FARN EQU 0DSEG EGMENTSO

3、URCE DB DUP(?)RESULT DW DUP(0)NAME0 DB INPUTDAT,0NAME1 DB OUTPUTDAT,0DSEG NDSSSEG EGMENT TACKB 56 DUP(?)SSEG NDSCSEG EGMENTSSUME CS:CSEG,DS:DSEG,SS:SSEGSTART ROC ARUSH SOR AX,AXUSH AXOV AX,DSEGOV DS,AXEA DX,SOURCEEA SI,NAME0OV CX,NALL OAD; * BEGIN *EA SI,SOURCEEA DI,RESULTLDOV CX,NOV DL,80OV DH,120A

4、GAIN: MOV AL,SIMP AL,8(1) UL DLMP NEXTBIGGER: (2) UB AL,8(3) DD AX,BXNEXT: (4) (5) NC SIOOP GAIN; *+* END *EA DX,RESULTEA SI,NAME1OV CX,N*2ALL AVEETSTART ENDPCSEG NDSEND START(分数:100.00)_三级 PC技术机试-166 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.编制一个程序,其功能为:内存中以 8位无符号数形式连续存放着 10个数据,这数据来自于一个自动抄表

5、系统记录的 10个用户某月天然气的使用量(立方米),天然气费计算公式如下(其中,X 表示天然气用量,Y 表示应该天然气费):a)YX80 X8b)Y880+(X-8)120 X8计算每个用户需要交的天然气费,结果用字表示,并将结果存入指定单元。例如:用天然气量为:05H,07H,12H则天然气费为:0190H,0348H,0780H部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUTDAT 中读入以 SOURCE开始的内存单元中。运算结果要求从 RESULT开始的内存单元存放,由过程 SAVE保存到文件 OUTPUTDAT 中。请填空 BEGIN和 END之间已给出的源程序使其完整

6、,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序TRN AD:FAR,SAVE:FARN EQU 0DSEG EGMENTSOURCE DB DUP(?)RESULT DW DUP(0)NAME0 DB INPUTDAT,0NAME1 DB OUTPUTDAT,0DSEG NDSSSEG EGMENT TACKB 56 DUP(?)SSEG NDSCS

7、EG EGMENTSSUME CS:CSEG,DS:DSEG,SS:SSEGSTART ROC ARUSH SOR AX,AXUSH AXOV AX,DSEGOV DS,AXEA DX,SOURCEEA SI,NAME0OV CX,NALL OAD; * BEGIN *EA SI,SOURCEEA DI,RESULTLDOV CX,NOV DL,80OV DH,120AGAIN: MOV AL,SIMP AL,8(1) UL DLMP NEXTBIGGER: (2) UB AL,8(3) DD AX,BXNEXT: (4) (5) NC SIOOP GAIN; *+* END *EA DX,R

8、ESULTEA SI,NAME1OV CX,N*2ALL AVEETSTART ENDPCSEG NDSEND START(分数:100.00)_正确答案:(1)JA BIGGER (2)MOV BX,80*8 (3)MUL DH (4)MOVDI,AX (5)ADD DI,2)解析:解析本题也是一个分段函数问题,题目所要求的功能可用一个循环程序和几个分支程序来完成,又由于只分两种情况,因此用两个分支程序即可实现。在程序中,首先将乘法要使用的系数放到了 DL和 DH中,然后进入循环程序。循环程序中,首先将第一个数据取入 AL后,对其进行判断,如果小于 8的话,则直接执行乘以 80的操作,否则要

9、跳转到其他地方执行。由于是大于 8的时候进行跳转,因此应该使用 JA指令。同时如果跳转到 AGAIN的话,则已经取下一个数据,而此时这个数据还未处理完,因此不能是 AGAIN;如果跳转到 NEXT,NEXT 后的程序有两个空白、一条 ADD和一条 LOOP语句,两个空白处显然无法将表达式 b求出,因此 NEXT也不是,所以 JA跳转的语句只能是 BIGGER,即第一个空白处的内容是 JA NEXT。程序运行到 BIGGER之后的程序段的时候,执行的是表达式 b的内容。程序中有一条 SUBAL,8 的语句,显然这是在进行表达式 b第二个式子的计算,所以接下来语句的功能是乘以 120,即 MUL

10、DH,这也就是第三个空应该填的内容。在第三个空的下面有一条ADD AX,BX 的语句,这是执行表达式 b的加法操作,所以程序的前面的部分必须有将 880送入 BX寄存器的语句,即第二个空应填 MOV BX,8*80。到此为止,程序已经完成了对一个数据的处理,下面应该进行的是存储操作与循环。NEXT 后面的程序对运算的结果进行存储并控制整个循环。程序计算的结果要送入 RESULT中,指针 D旨向的正是 RESULT存储单元,所以直接传送即可,即第四个空白处的内容为 MOV DI,AX。数据存储完毕以后,应该进行的就是指针的修改,为下一次循环做准备,RESULT 是用 DW 来进行定义的,所以指针 DI每次的改变量应该为 2,即第五个空白处应填的内容为 ADD DI,2。

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

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

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