全国计算机等级三级考试PC技术上机试练习习题.docx

上传人:b****6 文档编号:6712922 上传时间:2023-01-09 格式:DOCX 页数:28 大小:382.51KB
下载 相关 举报
全国计算机等级三级考试PC技术上机试练习习题.docx_第1页
第1页 / 共28页
全国计算机等级三级考试PC技术上机试练习习题.docx_第2页
第2页 / 共28页
全国计算机等级三级考试PC技术上机试练习习题.docx_第3页
第3页 / 共28页
全国计算机等级三级考试PC技术上机试练习习题.docx_第4页
第4页 / 共28页
全国计算机等级三级考试PC技术上机试练习习题.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

全国计算机等级三级考试PC技术上机试练习习题.docx

《全国计算机等级三级考试PC技术上机试练习习题.docx》由会员分享,可在线阅读,更多相关《全国计算机等级三级考试PC技术上机试练习习题.docx(28页珍藏版)》请在冰豆网上搜索。

全国计算机等级三级考试PC技术上机试练习习题.docx

全国计算机等级三级考试PC技术上机试练习习题

2009年全国计算机等级三级考试PC技术上机试练习习题

(1)

 来源:

考试大   2008/12/16    【考试大:

中国教育考试第一门户】   模拟考场   视频课程   字号:

T T

第1套上机试题及答案详解

  请编制程序,其功能是:

将内存中由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域。

存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。

  例如:

  内存中有:

1EH,91H,74H,9lH,42H,30H,81H,F3H,18H,25H

  结果为:

06H,1EH,74H,42H,30H,18H,25H,04H,91H,91H,81H,F3H

  部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

  请填空BEGIN和END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

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

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

  【试题程序】  

来源:

考试大-计算机等级考试【参考答案】

  

(1)MOV

  

(2)80H

  (3)JMPMAIN3

  (4)LOOP

  (5)[SI]

  (6)MAIN4

  (7)INCBX

  【解析】

  此程序主要实现正数和负数的分离,并统计正数和负数的个数。

结果存放在RESULT指示的内存区域。

存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。

程序中寄存器DL存放正数的个数,DH存放负数的个数。

程序的堆栈段中定义了一个128字节的堆栈区。

  堆栈段下面是数据段,数据段中定义了六个字节型变量:

原始数据区SOURCE、结果数据区RESULT、原始数据文件名NAME0、结果数据文件名NAME1,以及正数和负数数组存放缓冲区首址NDATA和PDATA。

数据段下面是代码段,在代码段的开始告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器CS、DS、SS。

  接下来是对返回地址的保存和数据段寄存器的初始化,这是每一个汇编程序所必须具有的操作步骤。

然后调用外部过程LOAD,从“INPUT1.DAT,,中读取数据。

准备工作完成以后,程序进入主体部分。

注惫,程序中所有分号“;”后边的部分均为注释说明性内容,它可以帮助人们阅读、理解程序,但对程序的功能无任何影响程序的开始,将原始数据偏移地址装入到S1中。

存放正数和负数的缓冲区地址分别送入DI和BX中,所以第

(1)空填写“MOV”。

然后用LODSB指令将SI当前所指向的地址单元(即[SI])中内容装入到AL中。

  接着要判断AL的正负性,第

(2)空填写“80H”,将AL和80H做逻辑“与”操作。

若逻辑“与”的结果不为全0,则ZF=0,说明AL中的内容为负数,应使存放负数个数的DH加1,并将AL的内容存入负数数组缓冲区,接着使BX加1,指向下一单元,然后转向MAIN3段,所以第(3)空填写JMPMAIN3若逻辑“与”的结果为全0,则说明AL中的内容为正数,转向MAIN2段,存放正数个数的DL加1。

MAIN3段开始处要填写第(4)空,显然应该是“LOOPMAINl”,即继续判断下一个数AL的正负性。

然后将DL中的正数个数送CL,用于控制循环次数。

在依次将DL个正数存入到DI当前所指向的地址单元(即[DI])中。

第(5)空填写“[sI]”,S1装入的是正数的偏移地址。

第(6)空考查的是循环,装入正数到[DI]的循环入口处是MAIN4。

MAIN5段是依次将负数存放到[DI]中,在此之前已将DH中的负数个数赋值给CL,用以控制装入负数的循环次数。

因为BX中装入的是负数的偏移地址,所以每次存入一个负数后,偏移地址BX加1,指向下一个负数。

所以第(7)空填写“INCBX”。

  ***END***后面的指令是分别将结果数据区首址、结果文件名装入到DX和Sl中,并保存结果文件。

另外,程序段的第一条语句“EXTRNLOAD:

FAR,SAVE:

FAR”中的EXTRN是外部符号名说明伪指令,其格式为:

EXTRN:

名字1:

类型1[,……],表示在本模块中引用的这些名字及其类型是在其他模块中定义的。

这里,表示过程LOAD和SAVE均为外部过程,它们的类型均为FAR。

2009年全国计算机等级三级考试PC技术上机试练习习题

(2)

 来源:

考试大   2008/12/19    【考试大:

中国教育考试第一门户】   模拟考场   视频课程   字号:

T T

  第2套上机试题及答案详解

  请编制程序,其功能是:

内存中连续存放着16个二进制字节数,在原16个数的第4和第5个数之间插入00H,在原16个数的第8和第9个数之问插入55H,在原16个数的第12和第13个数之间插入AAH,在原16个数的最后加入FFH。

将按上述方法插入4个字节数后得到的20个字节数存入内存中。

  例如:

内存中有:

10H,20H,30H,40H,50H,…,8FH(共16个字节)

  结果为:

10H,20H,30H,40H,00H,50H,…,8FH,FFH(共20个字节)

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

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

  请填空BEGIN和END之间已经给出的源程序使其完整,需填空处已经用横线标出,每个空白一般只需一条指令,也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

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

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

  【试题程序】

  

  

来源:

考试大-计算机等级考试

【参考答案】

  

(1)MOVSI,0

  

(2)MOVAH,SOURCE[SI]

  (3)INCSI

  (4)AH

  (5)EXIT

  (6)POPSI

  (7)CHAN

  【解析】

  此程序所要实现的过程是在连续存放的16个数的四个不同位置当中插入四个不同的数。

程序开始,将要插入的四个数即:

0FFH,0AAH,55H,00H,先定义成字节型变量INDATA。

程序中寄存器BX和CX的作用主要是用于计数控制。

CX用于控制一次存储4个数到结果数据区中,一共要存储四组。

这四组分别是第1~4个、第5~8个、第9~12个、第13~16个。

存完一组数据后,在各组后面分别插入00H、55H、0AAH、0FFH。

BX用于控制所要插入数的个数,插入完一个数后,BX减1。

  程序的堆栈段定义了一个128字节的堆栈区,堆栈段下面是数据段。

数据段中定义了五个字节型变量:

原始数据区SOURCE、变量INDATA(包括四个将要插入的数)、结果数据区RESULT、原始数据文件名NAME0、结果数据文件名NAME1。

数据段下面是代码段,在代码段的开始告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器CS、DS、SS。

  接下来是对返回地址的保存和数据段寄存器的初始化,这是每一个汇编程序所必须具有的操作步骤。

然后调用外部过程LOAD,从‘'INPUT1.DAT”中读取数据。

准备工作完成以后,程序进入主体部分。

需说明的是,程序中所有分号“;”后边的部分均为注释说明性内容。

  将原始数据的偏移地址SI赋初值为0,所以第

(1)空填写“MOVSI,0”。

将结果数据韵偏移地址DI也赋初值为0,CX和BX的初值都为4。

由于需先将SOURCE[SI]中的内容传送给AH,所以第

(2)空填写“MOVAH,SOURCE[SI]”,再将AH存储到RESULT[DI]中。

CX减1,若CX为0,表示已经搜索到了第四个字符,则转向INSERl段,开始插入第一个数:

否则CX不为0,继续搜索下一个字符,即无条件转向CHAN段。

第(3)空SI地址加1,继续取下一个数据。

  INSER1段是将INDATA中的数据插入到RESULT[DI]中。

先给AH赋值为INDATA[S1-1],再将AH存入到RESULT[DI]中,所以第(4)空填写“AH”。

INDATA[SI-1]表示每次取完INDATA中的一个数后,偏移地址SI减1,取下一个数(INDATA中一共四个数)。

插入一个数后,BX减I,若BX减为0,表示四个数全部都已经插入到数组的四个位置中,则转向EXIT段,所以第(5)空填写“EXIT”。

  另外,在INSER1程序段中,先执行指令“PUSHSI”,然后给Sl赋值,有压入就必有弹出,所以第(6)空填写“POPSI”,与前面的“PUSHSI”指令相对应。

当插入操作未完时,继续搜索下一组四个数,然后再插入新的数,无条件转向CHAN段,所以第(7)空填写“CHAN”。

来源:

考试大-计算机等级考试2009年全国计算机等级三级考试PC技术上机试练习习题(3)

 来源:

考试大   2009/1/1    【考试大:

中国教育考试第一门户】   模拟考场   视频课程   字号:

T T

  第3套上机试题及答案详解

  请编制程序,其功能是:

以SOURCE开始的内存区域存放着N个字节的压缩BCD码,将每个压缩BCD码转换成两个ASCIl值,并在每个ASCII值的最高位增加偶校验位,结果存放在RESULT指示的内存区域。

  例如:

  原压缩BCD码:

26H,75H,91H,33H…

  结果为:

82H,36H,B7H…

  部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

  请填空BEGIN和END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

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

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

  【试题程序】

  

  

  

来源:

考试大-计算机等级考试

【参考答案】

  

(1)AL,[SI]

  

(2)SHRAL,CL

  (3)POPCX

  (4)JPSERCH2

  (5)ADDAH,30H

  (6)LOOP

  【解析】

  此程序要实现两个功能:

将N个字节的压缩BCD码转换成2N个ASCII值,并在每个ASCH值的最高位增加偶校验位。

这里考查压缩BCD码与ASCII码之间的转换,特别是对SHR指令的理解和状态标志位PF的运用。

  程序的基本结构如下:

  堆栈段定义了一个128字节的堆栈区。

堆栈段下面是数据段。

数据段中定义了四个字节型变量:

原始数据区SOURCE、结果数据区RESULT、原始数据文件名NAME0、结果数据文件名.NAME1。

数据段下面是代码段,在代码段开始告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器CS、DS、SS。

  先将原始数据偏移地址装入到Sl中,结果数据偏移地址送DI。

CX初值为N,用于控制循环处理的次数。

SERCH1段的开始要填写第

(1)空,将ESI]中的内容传送到AL。

所以第

(1)空填写“AL,[SI]”。

将AL暂存在AH中。

接着用两条逻辑“与”指令,将AH的高四位屏蔽掉,将AL的低四位屏蔽掉。

CX先压入堆栈中,再将CL赋值为4,用以控制下面的移位指令的移位位数。

将AL逻辑右移四位,则AL的原高四位数字移入到低四位,高四位现在变成了0。

(2)空填写“SHRAL.CL”。

  有压入就必有弹出,与前面的“PUSHCX”指令相对应,第(3)空填写“POPCX”。

然后将AL中的值加30H,就将压缩BCD码的高四位转换成相应的ASCII字符了。

再由状态标志位PF求AI的偶校验位。

若PF=1,说明AL中有偶数个1,则偶校验位为0,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”。

2009年全国计算机等级三级考试PC技术上机试练习习题(4)

 来源:

考试大   2009/1/2    【考试大:

中国教育考试第一门户】   模拟考场   视频课程   字号:

T T

  第4套上机试题及答案详解

  请编制程序,其功能是:

内存中连续存放着20个十六位二进制无符号数序列,请将它们排成升序(从小到大)。

  例如:

  内存中有:

7001H,7004H,7002H,…(假设后17个字均大于7004H)

  结果为:

7001H,7002H,7004H,…(后跟17个字,按从小到大的顺序排列)

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

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

  请填空BEGIN和END之间已经给出的源程序使其完整,需填空处已经用横线标出,每个空白一般只需一条指令,也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

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

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

  【试题程序】

  

  

来源:

考试大-计算机等级考试

 【参考答案】

  

(1)2

  

(2)ADDDI,2

  (3)NEXT0

  (4)BX

  (5)SW

  (6)AX

  (7)NEXT

  (8)DECBX

  (9)JNZ

  【解析】

  所谓“冒泡排序法”就是从第一个数开始与相邻的数进行比较,若两数的顺序已符合要求(本题要求为升序),则不必交换;否则将两数交换。

依此类推,直至第n-1个数和第n个数进行过比较为止。

上述过程称为第一趟冒泡排序。

第一趟冒泡排序经过n-1次比较后,最大的数已经到了数组尾,第二趟仅需比较n-2次就够了,一共比较n-1趟就完成了排序。

整个程序共有两重循环:

CX控制内循环次数,而BX控制外循环次数。

  程序的堆栈段定义了一个128字节的堆栈区,堆栈蜗旅媸鞘荻巍J荻沃卸ㄒ辶肆礁鲎中捅淞浚涸际萸鳶OURCE和结果数据区RESULT;两个字节型变量:

原始数据文件名NAME0和结果数据文件名NAME1。

数据段下面是代码段,在代码段开始告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器CS、DS、SS。

  因为原始数据和结果数据都是以字型存放的,所以第

(1)、

(2)空sl和Dl地址要分别加2。

(1)空填“2”,第

(2)空填“ADDDI,2”。

接着开始循环,循环入口处是NEXT0,所以第(3)空填写“NEXT0”。

第(3)空之前的几条指令是实现将原始数据区SOURCE中的数据依次装入到RESULT中。

  CLD指令是将方向标志DF清0,以便在执行串操作指令时,实现地址指针自动增量。

  MAL1段和NEXT段是实现每趟内的数据比较。

第一趟比较N-1次后,最大的数已到了末尾,第二趟仅需比较N一2次就够了,所以CX是随着BX变化的。

  第(5)空是需要将由Sl作为地址指针的字单元的内容装入到AX中,同时SI自动加2,指向下一个字单元。

接下来将下一个数与当前的数进行比较,若大于,则继续循环,取下一个数;若小于,则两数交换。

所以第(6)空应该填写“AX”。

第(7)、(8)、(9)空是完成一趟比较后,BX应减l,若BX不为0,则继续循环,进行第二趟比较,循环入口处是NEXT。

所以第(7)空填写“NEXT”,第(8)空填写“DECBX”,第(9)空填写“JNZ”。

全国计算机等级三级考试PC技术上机试练习习题(5)

 来源:

考试大   2009/1/9    【考试大:

中国教育考试第一门户】   模拟考场   视频课程   字号:

T T

  第5套上机试题及答案详解

  清编制程序,其功能是:

内存中连续存放着10个十六位二进制数。

分别对每个数的高位字节和低位字节进行逻辑与运算及逻辑或运算。

运算结果以字的形式按序连续存放(低位字节存入逻辑与运算的结果,高位字节存入逻辑或运算的结果)。

  例如:

  内存中有:

AA55H,55AAH,FFAAH

  结果为:

FF00H,FF00H,FFAAH

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

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

  请填空BEGIN和END之间已经给出的源程序使其完整,空白处已经用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

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

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

  【试题程序】

  

  

来源:

考试大-计算机等级考试

【参考答案】

  

(1)SOURCE[Bx]

  

(2)DL

  (3)OR

  (4)AL

  (5)MOV[DI],AX

  (6)DECCX

  【解析】

  该程序的功能是:

将每个16位二进制数的高8位和低8位分别进行逻辑“与”运算和逻辑“或”运算,并将运算结果以字的形式按序连续存放,低字节存放逻辑“与”运算的结果,高字节存放逻辑“或”运算的结果。

  程序的堆栈段定义了一个128字节的堆栈区。

堆栈段下面是数据段。

数据段中定义了两个字型变量:

原始数据区SOURCE和结果数据区RESULT;两个字节型变量:

原始数据文件名NAME0和结果数据文件名NAME1。

数据段下面是代码段,在代码段的开始告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器CS、DS、SS。

  在程序的开始部分,是对返回地址的保存和数据段寄存器的初始化,这是每一个汇编程序所必须具有的操作步骤。

然后调用外部过程LOAD,从“INPUT1.DAT”中读取数据。

准备工作完成以后,程序进入主体部分。

  首先将结果数据偏移地址传送给DI,CX赋初值为N,原始数据偏移地址BX赋初值为0。

在PRO段,将SOURCEEBX]中的内容送AX,所以第

(1)空填写“SOURCE[Bx]”。

接着将AX中的数据送DX暂存,将DL和DH中的内容(即16位二进制数的高8位和低8位的值)进行逻辑“与”操作,结果存放于DL中,所以第

(2)空填写“DL”。

然后将AH和AL中的内容进行逻辑“或”操作,结果存放于AH中,第(3)空填写“0R”。

将高8位和低8位逻辑“与”的结果(DL的内容)送AL,所以第(4)空填写“AL”。

注意,此时AH中的内容为高8位和低8位逻辑“或”的结果。

接着将地址指针BX加2,指向下一个16位二进制数。

最后,将AX中的逻辑“或”和逻辑“与”的结果存入到字单元[DI]中,所以第(5)空填写“MOV[DI],AX”。

  当处理完一个l6位二进制数后,CX减1,若CX的内容不为0,则转向PRO段,继续处理下一个16位二进制数;若CX内容为0,说明10个16位二进制数已全部处理完。

显然第(6)空应填写“DECCX”,用以实现循环计数全国计算机等级三级考试PC技术上机试练习习题(6)

 来源:

考试大   2009/1/9    【考试大:

中国教育考试第一门户】   模拟考场   视频课程   字号:

T T

  第6套上机试题及答案详解

  编制一个程序,其实现的功能为:

计算10个带符号字节数据的绝对值之和(和为字型),并且找出绝对值最小的数及其所在的偏移地址,将结果依次存入指定的内存区中,结果以0FH结束。

  例如:

  内存中有:

23H,14H,00H,08H,FEH,87H,02H,01H,FFH,01H

  结果为:

BFH,00H,00H,02H,00H,0FH

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

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

  请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

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

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

  【试题程序】

  

  

来源:

考试大-计算机等级考试

【参考答案】

  

(1)ADCBYTEPTR[DI+I],0

  

(2)NEGAL

  (3)ADCBYTEPTR[DI+I],0

  (4)MOVDX,SI

  (5)BYTEPTR[DI]

  【解析】

  程序的整体结构是:

先对数据进行判断,若是正数,则直接求和,否则求补以后再进行相加。

并且对每个数的绝对值进行比较,绝对值最小的数放在MIN中,绝对值最小数的偏移地址放在DX中。

  程序开始进行的是指针的初始化,SI中为SOURCE的偏移地址,DI中为RESULT的偏移地址,并将SOURCE中第一个存储单元的数据和地址分别放在AL和DX中。

第一个数装入以后,需要对其进行判断,如果为正数的话,可以接着执行下面的程序段,否则就求出它的绝对值(即对其进行求补操作)。

完成操作以后,就可以把第一个数当成比较对象和其他值的绝对值进行比较。

首先将AL中的数放入MIN中,然后将其加到RESULT的第一个单元中(即Dl所指的地址单元中),在执行加法运算时,要将其进位也加进去,所以第一个空白处应该填的内容是对进位进行相加,即ADCBYTEPTR[DI+1],0。

  从第二个数据开始,程序进入循环,即后面的数将执行同一操作:

判断是否为正数,若是正数,则直接加入Dl所指的单元,否则求补以后再加入。

同时,把数据的绝对值与MIN中的内容进行比较,如果数据的绝对值小于MIN则将数据放入MIN中,并且把此时的偏移地址Sl存入DX中,否则执行下一次加法与比较操作。

因此,对于2~4个空缺处来说,需要完成的就是上述的操作。

  执行完加法操作和找出绝对值最小的数以后,接下来便是按照要求对结果进行存储。

由于题目要求最后一个存

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

当前位置:首页 > PPT模板 > 艺术创意

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

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