计算机三级PC技术上机真题汇集.docx

上传人:b****6 文档编号:3641889 上传时间:2022-11-24 格式:DOCX 页数:31 大小:26.41KB
下载 相关 举报
计算机三级PC技术上机真题汇集.docx_第1页
第1页 / 共31页
计算机三级PC技术上机真题汇集.docx_第2页
第2页 / 共31页
计算机三级PC技术上机真题汇集.docx_第3页
第3页 / 共31页
计算机三级PC技术上机真题汇集.docx_第4页
第4页 / 共31页
计算机三级PC技术上机真题汇集.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

计算机三级PC技术上机真题汇集.docx

《计算机三级PC技术上机真题汇集.docx》由会员分享,可在线阅读,更多相关《计算机三级PC技术上机真题汇集.docx(31页珍藏版)》请在冰豆网上搜索。

计算机三级PC技术上机真题汇集.docx

计算机三级PC技术上机真题汇集

计算机三级(PC技术)机试67

背景色:

字体大小:

行高:

隐藏所有题目折叠过长题目计算机三级PC技术(机试)

1.请编制程序,其功能是:

对一个由可打印ASCII字符(ASCII值为20H~7FH)

组成的字符串可采用下列方法进行压缩:

从串首开始向后扫描,如某字符单独出现则该字符不变

,如某字符连续出现n次,则该字符用ESC(1BH),n,<原字符>三个字节来代替(假定n不超过

255)。

设内存中从SOURCE开始有一用上述方法压缩的字符串,其以OOH结束,解压后长度不超过100

试编程对其解压缩,结果存入RESULT开始的内存单元。

例如:

原串:

41H,1BH,06H,43H,61H,00H

解压缩后:

41H,43H,43H,43H,43H,43H,43H,61H,OOH("ACCCCCCa")

部分程序已给出,原始数据由过程LOAD从文件INPUT.DAT中读入SOURCE开始的内存单元中,结

果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。

请填空BEGIN和END之间已给出的源程序使其完整,空白己用横线标出,每个空白一般只需一

条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编写程序片

段来完成所要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。

调试中若

发现整个程序中存在错误之处,请加以修改。

【试题程序】

EXTRNLOAD:

FAR,SAVE:

FAR

NEQU100

ESC_CODEEQU27

STACSEGMENTSTACK

DB128DUP(?

STACENDS

DATASEGMENT

SOURCEDBNDUP(?

RESULTDBNDUP(0)

NAME0DB'INPUT.DAT',0

NAME1DB'OUTPUT.DAT',0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STAC

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVES,AX;置附加段寄存器

LEADX,SOURCE;数据区起始地址

LEASI,NAME0;原始数据文件名起始地址

MOVCX,N;字节

CALLLOAD;从"INPUT.DAT"中读取数据

********BEGIN********

LEASI,SOURCE

LEADI,RESULT

CLD

LO:

LODSB

CMPAL,0

JEQUIT

CMPAL,ESC_CODE

J

(1)EXPAND

(2)

JMPL0

EXPAND:

(3);解压缩

XORCX,CX

(4)

(5)

(6)

(7)

JMPLO

QUIT:

STOSB;STORETHE'00H'

********END********

LEADX,RESULT;结果数据区首址

LEASI,NAME1;结果文件名起始地址

MOVCX,N;字节数

CALLSAVE;保存结果到"output.dat"文件

RET

STARTENDP

CODEENDS

ENDSTART_____

[+][-][=]

[参考答案](1分)

(1)E

(2)STOSB(3)CID(4)MOVCL,[SI]

(5)MOVAL,[SI+1](6)REPSTOSB(7)ADDSI,2

[您的答案]

[详细解答]本题是一道数据插入题,其中本题采用的算法是首先从原始数据区读取一个字节

,判断是否为结束标志,若是结束标志,则直接送至结果数据区并结束处理,若不是结束标志则

再次判断是否是压缩标志,是则读取下一个字节,然后将其值送CL,再读取下一个字节到AL,以

CL为计数器重复将刚才读取的数据写入结果数据区,然后继续读取下一个数据开始进行判断,直

到发现结束标志为止。

反之则直接将该字符送到结果数据区。

程序中使用串处理指令LODSB来完成读取数据和修改原始数据区偏移地址的目的:

使用串处理

指令STOSB来完成写入数据和修改结果数据区偏移地址的目的;使用CL做计数器和指令REP完成循

环处理

计算机三级(PC技术)机试66

背景色:

字体大小:

行高:

隐藏所有题目折叠过长题目计算机三级PC技术(机试)

1.编制一个程序,其实现的功能是:

对一个数字采集系统采集的50个字节无

符号数按算术平均数字滤波方法进行数字滤波,每5个数求一个平均数(含余数,其中低字节为商

,高字节为余数),将10个平均值依次存入RESULT指示的内存区域。

例如:

原始采集数据:

05H,07H,12H,08H,10H,09H,2EH,56H,48H,85H,65H,36H,45H……

则结果为:

0A04H,4003H……

部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存

单元中。

运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。

请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需

要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自

行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。

调试中若

发现整个程序中存在错误之处,请加以修改。

【试题程序】

EXTRNLOAD:

FAR,SAVE:

FAR

NEQU10

DSEGSEGMENT

SOURCEDB6*NDUP(?

RESULTDWNDUP(0)

NAME0DB'INPUT.DAT',0

NAME1DB'OUTPUT.DAT',0

DSEGENDS

SSEGSEGMENTSTACK

DB256DUP(?

SSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG,SS:

SSEG

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

LEADX,SOURCE

LEASI,NAME0

MOVCX,6*N

CALLLOAD

;********BEGIN********

LEASI,SOURCE

LEADI,RESULT

MOVDX,N

AGAIN:

SUBAX,AX

(1)

MOVCX,6

AGAIN1:

MOVAX,[SI]

ADDBX,AL

INCSI

(2)

(3)

MOVCL,6

(4)

(5)

ADDDI,2

DECDX

JNZAGAIN

;********END********

LEADX,RESULT

LEASI,NAME1

MOVCX,N*2

CALLSAVE

RET

STARTENDP

CSEGENDS

ENDSTART_____

[+][-][=]

[参考答案](1分)

(1)SUBBX,BX或XORBX,BX或MOVBX,0

(2)LOOPAGAIN1

(3)MOVAX,BX(4)DIVCL(5)MOV[DI],AX

[您的答案]

[详细解答]如果将数据中6个数分为一组的话,则对每一组的操作是一样的,即求这一组数

的平均数,因此只需要实现一组的操作,其他的用循环程序来实现。

将指针初始化以后,将循环的参数送DX寄存器,用来控制循环。

进入循环以后,因为每次循

环都要使用某些寄存器,并且每次的内容都不一样,所以要对部分寄存器进行清零操作。

从后面

的程序可以看出,BX寄存器是用来进行求和操作的,所以在每次进行求和操作之前应该对其进行

清零操作,否则会把前一次的结果累加到后一次中。

因此,需要对BX寄存器进行清零,这就是第

一个空白处应该填的内容。

通常进行清零的操作有SUBBX,BX或XORBX,BX或MOVBX,0。

完成清零工作以后,便对数据进行处理。

要求一组数据的平均数,首先要进行求和操作,从

程序中可以看出求和操作用循环AGAIN1来实现,然而程序中没有控制AGAIN1循环结束的语句(即

判断什么情况继续循环,什么情况停止循环向下执行的语句),所以需要在空白处填写。

从第二

个空白以上的程序来看,已经完成了加法运算,只需要控制其循环结束即可,所以要在第二个空

白处填控制循环语句。

在前面的程序中,已经将循环次数送到CX中,因此用LOOPAGAIN1即可控

制求和运算的循环。

求和结束以后,就要对数据进行除法操作。

由于程序中除数为6,所以被除数放到AX中即可。

前面的求和操作结束时,所得结果最后存放的寄存器为BX,因此需要将数据从BX传送到AX中。

送结束以后,就可以进行除法操作。

除完以后,将结果存入RESULT中,所以第三个、第四个和第

五个空加上已经有的语句需要完成上述操作。

在第三个空中,将被除数传送到BX,因此指令为

MOVAX,BX。

MOVCL,6,将除数传送到CL寄存器中,接下来进行除法操作,即第四个空要填写的

内容为DIVCL。

执行完除法操作以后,商和余数分别位于AL和AH寄存器中,与题目要求的商在低

字节,余数在高字节的要求刚好吻合,因此直接送入RESULT中即可,这样便由最后一个空来实现

,而指针DI已经指向RESULT,所以应填MOV[DI],AX。

计算机三级(PC技术)机试65

背景色:

字体大小:

行高:

隐藏所有题目折叠过长题目计算机三级PC技术(机试)

1.编制一个程序,实现如下功能:

将内存中连续存放的10个八位二进制无符

号数按照从大到小的顺序排列。

例如:

内存中有:

3EH,0FEH,5DH……(假设后面的7个数都小于3EH)

结果为:

0FEH,5DH,3EH……(后面跟7个字,按照从大到小的顺序排列)。

部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存

单元中。

运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。

请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需

要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自

行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。

调试中若

发现整个程序中存在错误之处,请加以修改。

【试题程序】

EXTRNLOAD:

FAR,SAVE:

FAR

NEQU10

SSEGSEGMENTSTACK

DB256DUP(?

SSEGENDS

DSEGSEGMENT

SOURCEDBNDUP(?

RESULTDBNDUP(0)

NAME0DB'INPUT.DAT',0

NAME1DB'OUTPUT.DAT',0

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG,SS:

SSEG

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

LEADX,SOURCE

LEASI,NAME0

MOVCX,N

CALLLOAD

;********BEGIN********

MOVSI,OFFSETSOURCE

MOVDI,OFFSETRESULT

MOVCX,N

AGAIN0:

MOVAX,[SI]

MOV[DI],AX

ADDSI,

(1)

(2)

LOOPAGAIN0

CLD

MOVBX,N-1

AGAIN1:

MOVSI,OFFSETRESULT

MOVCX,BX

AGAIN2:

LODSB

CMP[SI],AX

(3)

XCHG[SI],AX

(4)

NEXT:

LOOPAGAIN2

(5)

JNZAGAIN1

;********END********

LEADX,RESULT

LEASI,NAME1

MOVCX,N

CALLSAVE

RET

STARTENDP

CSEGENDS

ENDSTART_____

[+][-][=]

[参考答案](1分)

(1)1

(2)ADDDI,1(3)JBENEXT

(4)MOV[SI-1],AX(5)DECBX

[您的答案]

[详细解答]本题是一道降序排列题,程序首先是将以SOURCE开始的内存单元中的数据传送到

RESULT中,利用循环AGAIN0实现。

在循环中,需要不断地改变指针,但由于题中的变量为字节型

,因此指针的改变为1,即第一个空白处应填1。

指向SOURCE的指针增加1的时候,指向RESULT的

指针也应该增加1,所以第二个空白处应填ADDDI,1。

接下来的程序便是对数据进行从大到小排列,CLD使指针向着增加的方向移动。

在对两个数据

进行比较后,因为要求从大到小排列,所以小的数据要往后移,若后面的数据较小,则不需要交

换,直接进行下一次比较,所以第三个空白处应填JBENEXT。

若后面的数据大,则在进行数据交

换以后需要将大的数据装入前面的存储单元,因此第四个空白处应填MOV[SI-1],AX。

每一轮比

较后,参加比较的数据的较小者都被放到了最后,这样只需要N-1轮比较就可以得到正确的排序

排序轮次的控制由BX寄存器来实现,因此最后一个空白处应填DECBX。

计算机三级(PC技术)机试64

背景色:

字体大小:

行高:

隐藏所有题目折叠过长题目计算机三级PC技术(机试)

1.请编制程序,其功能是;内存中共有30个字节型数据,找出其中的两个

ASCII字符串并进行校验。

欲寻找的ASCII字符串由13个字符组成:

#(23H),7个ASCII字符,*

(2AH),2个ASCII字符,回车符(0DH),换行符(0AH)。

校验方法为:

对字符#及字符,之间的7个ASCII字符进行异或操作,若异或操作结果的ASCII

字符表示(异或操作结果高4位的ASCII字符表示在前,低4位的ASCII字符表示在后)与原字符串中

字符,之后的两个ASCII字符相同,则将原字符串原样保存:

反之,则将原字符串中的所有字符(

共13个)均用字符!

(21H)代替。

例如:

内存中有:

33H,35H,23H('#',第一个字符串开始),46H,41H,30H,2EH,34H,3DH,31H

,2AH('#'),32H,

31H,ODH,OAH,46H,23H('#',第二个字符串开始),46H,41H,30H,2EH,34H,46H,41H

30H,46H,41H,30H,2EH,34H,3DH,30H,2AH('*'),32H,31H,ODH,OAH,55H

结果为:

23H,46H,41H,30H,2EH,34H,3DH,31H,2AH('*'),32H,31H(校验正确,该字

符串原样保持),

ODH,OAH,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H(校验错

,整个字符串用字符“!

”代替)

部分程序已给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入SOURCE开始的内存单元

中。

运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。

请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一

条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成

所要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。

调试中若

发现整个程序中存在错误之处,请加以修改。

【试题程序】

EXTRNLOAD:

FAR,SAVE:

FAR

NEQU26

STACSEGMENTSTACK

DB128DUP(?

STACENDS

DATASEGMENT

SOURCEDBN+4DUP(?

RESULTDBNDUP(0)

HHDB2DUP(0)

NAME0DB'INPUT.DAT',0

NAME1DB'OUTPUT.DAT',0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STAC

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

LEADX,SOURCE;数据区起始地址

LEASI,NAME0;原始数据文件名

MOVCX,N+4;字节数

CALLLOAD;从'INPUT.DAT'中读取数据

;********BEGIN********

MOVSI,0

MOVDI,0

MOVBX,2;两个ASCII字符串

REPEAT:

MOVAH,0

SEARCH:

MOVAL,SOURCE[SI]

INCSI

CMPAL,'#'

(1)SEARCH

MOVRESULT[DI],AL

INCDI

SEARCH1:

MOVAL,SOURCE[SI]

INCSI

CMPAL,

(2)

JEASCII

MOVRESULT[DI],AL

INCDI

XORAH,AL

JMP(3)

ASCII:

MOVRESULT[DI],AL

INCDI

PUSHDI

MOVDI,0

MOVDH,2

MOVDL,AH;异或结果暂存在DL

MOVCL,4;先将结果高4位转换成ASDCII字符

SHRAH,CL;本行开始的4行语句将一个十六进制

数转换

;为ASCII码

CHANGE:

CMPAH,10

JLADD_0

ADDAH,'A'-'0'-10

ADD_O:

ADDAH,'0'

MOVHH[DI],AH

INCDI

DECDH

JZEXT

MOVAH,DL;再将异或结果低4位转换成

ASDCII字符

ANDAH,0FH

JMPCHANGE

EXT:

POPDI

MOVAL,SOURCE[SI]

MOVRESULT[DI],AL

INCSI

INCDI

MOVAH,SOURCE[SI]

MOVRESULT[DI],AH

INCSI

INCDI

MOVDL,HH

MOVDH,HH+1

CMPAX,DX

(4)ERR

MOVAL,0DH;校验正确

MOVRESULT[DI],AL

INCDI

MOVAL,0AH

MOVRESULT[DI],AL

INCDI

JMPLP

ERR:

SUBDI,11;校验正确

MOVAL,'!

'

MOVCX,(5)

COVER:

MOVRESULT[DI],AL

INCDI

LOOPCOVER

LP:

(6)

JZEXIT

JMPREPEAT

EXIT:

NOP

;********END********

LEADX,RE****SULT;结果数据区首址

LEASI,NAME1;结果文件名

MOVCX,N;结果字节数

CALLSAVE;保存结果到文件

RET

STARTENDP

CODEENDS

ENDSTART_____

[+][-][=]

[参考答案](1分)JNZ

(2)'*'(3)SEARCH1

(4)JNZ(5)13(6)DECBX

[您的答案]

[详细解答]本题是一道字符转换题,解决此类题型的关键是确定转换范围和条件。

其中转换

范围在题目中已给出为30个字符,同时还给出了需要查找的两个字符串。

接下来,首先计算指定范围内字符串中字符的异或操作结果,并将结果转换为对应的十六进

制ASCII码字符,然后再与字符串结束符后面的两个字符进行比较,若相同,则直接将原来的字

符串存入结果数据区,反之则将字符串中全部的字符替换为一个固定字符,存入结果数据区中。

此题目中涉及到的逻辑判断比较多,如果有一个地方出现错误,就很容易造成整个题目计算

结果的错误,因此需要非常的认真和仔细。

计算机三级(PC技术)机试63

背景色:

字体大小:

行高:

隐藏所有题目折叠过长题目计算机三级PC技术(机试)

1.请编制程序,其功能是:

从第0行第0列开始,依次取出N阶矩阵中对角线上

的元素(字节型)并计算累加和(字型),然后将其存放在指定的内存区中。

例如:

内存中有:

01H,01H,01H,02H,02H,02H,03ff,03H,03H

结果为:

01H,02H,03H,06H,00H

部分程序已给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入SOURCE开始的内存单元

中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。

请填空BEGIN和END之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空

白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指

令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。

调试中若

发现整个程序中存在错误之处,请加以修改。

【试题程序】

EXTRNLOAD:

FAR,SAVE:

FAR

NEQU10

DSEGSEGMENT

SOURCEDBN*10DUP(?

RESULTDB(N+2)DUP(0)

NAME0DB'INPUT.D

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

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1