查看全部128种考试
软件水平考试
 考试动态 报考指南 历年真题 模拟试题 复习资料 心得技巧 专业英语 技术文章 软考论坛 考试用书
 程序员 软件设计师 网络管理员 网络工程师 系统分析师 数据库系统工程师
1
2
3
4
5
6
7
8
9
10
xihuyu2000  
【字体: 1991年程序员下午试卷及答案
1991年程序员下午试卷及答案
spks.exam8.com 来源:考试吧(Exam8.com) 更新:2005-4-10 8:40:00 软件水平考试 考试论坛

 

试题 12

在 COMET 型计算机上可以使用试卷上所附的 CASL 汇编语言。阅读下列程序说明和 CASL 程序,把应填入程序中__(n)__ 处的字句,写在答卷的对应栏内。

[程序说明]


本程序将一个汉字的点阵逆时针旋转 90°,并输出旋转后的点阵字形。

图12-1是汉字“转”字的 16×16点阵字形。用“0”表示空白位置,用“1”表示非空白位置,“转”字的第一行即可表示为

0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0

若把它看作一个宇的16个Bit,“转”字的第一行就可以用十六进制的 1040 来表示。同理“转”字的第二行可表示为 1040,第三行可表示为1048,……在 COMET 机中,用 16 个字即可存放一个汉字的点阵字形。“转”字的点阵数据及字形如图 12-1 所示。

将一个汉字点阵逆时针旋转 90°,就是把该汉字点阵的最右列作为旋转后点阵的第一行,次最右列作为第二行,依次类推,形成一个旋转后的点阵字形。图 12-2 是将“转”字逆时针旋转 90° 后的点阵数据和字形。

1040 ...x.....x...... 0000 .................
1040 ...x.....x...... 0200 ......x.........
1048 ...x.....x..X... 1640 ...x.xx..x......
FDFC xxxxxx.xxxxxxx.. 32E0 ..xx..x.xxx.....
2040 ..x......x...... 1259 ...x..x..x.xx..x
2844 ..x.x....x...x.. 1246 ....x..x...x..xx.
4BFE .x..x.xxxxxxxxx. FE44 xxxxxxx..x...x..
7C80 .xxxxx..x....... 13C8 ...x..xxxx..x...
0888 ....x...x...x... 1240 ...x..x..x......
09FC ....x..xxxxxxx.. 0200 ......x.........
0C08 ...xxx......x... 1120 ...x...x..x.....
E810 xxx.x......x.... 17FF ...x.xxxxxxxxxxx
4890 .x..x...x..x.... F120 xxxx...x..x.....
0860 ....x....xx..... 1D10 ...xxx.x...x....
0820 ....x.....x..... 1318 ...x..xx...xx...
0810 ..,,x.,....x..., 1010 ...x.,,,...x....
图 12-1 图 12-2


    程序中,标号为 OLDPN 起的 16 个字中存放着“转”字的点阵数据,旋转后的点阵数据存放在标号为 NEWPN 起的 16 个字中。程序的前半部分,将该点阵数据逆时针旋转90°;程序的后半部分,将旋转后的点阵数据加以编辑。用字符“.”表示值为 0 的位,用字符“*”表示值为 1 的位。从而将新的点阵字形按行输出。

[问题]

在程序中的①~⑧处各填入一条正确的指令,以完成此程序。除非必要,标号栏不要填写。

[程序]

标号 操作码 操作数
START BEGIN
BEGIN ST GR4,SPSAVE
LEA GR2,0
NEWLN LEA GR3,0
ST GR3,NEWPN,GR2
NEWCL ST GR3,WORK
LD GR0,OLDPN,GR3
__①__
AND GR0,NUM01
LEA GR1,15
SUB GR1,WORK
SLL GR0,0,GR1
__②__
ST GR0,NEWPN,GR2
__③__
LEA GRl,0,GRl
JNZ NEWCL
__④__
CPA GR2,NUMl6
JMI NEWLN
GETLN LD GR2,NEWPN,GR1
LEA GR3,15
SETLN LEA GR4,0,GR2
AND GR4,NUM01
__⑤__
ST GR0,OUTLN,GR3
SRT * GR2,1
__⑥__
JPZ SETLN
OUT OUTLN,NUMl6
__ ⑦__
LEA GR0,-16,GR1
JNZ GETLN
__⑧__
EXIT
OUTLN DS 16
NEWPN DS 16
NUM01 DC 1
WORK DS 1
NUMl6 DC  16
CHRET DC '.X’
OLDPN DC #1040
DC #1040
DC #1048
DC #FDFC
DC #2040
DC #2844
DC #4BFE
DC #7C80
DC #0888
DC #09FC
DC #1C08
DC #E810
DC #4890
DC #0860
DC  #0820
DC #08101
SPSAVE DS 1
END

*老顽童注:此指令有错,疑为 SRL

 

试题13

阅读下列程序说明和 C 程序,将应填入程序中__(?)__处的字句,写在答卷纸的对应栏内。

[程序说明]


本程序将一个给定汉字的点阵逆时针旋转90度,并输出旋转前后的点阵数据及字形。

附图是汉字"转"字的 16×16 点阵字形,用数字 '0' 表示空白位置,用数字 '1' 表示非空白位置,“转”字的第一行机即可表示成如下的{0,1}序列:

0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0

如果把它看作一个字的 16 个位,“转”字的第一行可以用 16 进制数的 1040 来表示.同理,"转"字的第二行可以表示为1040 ,第三行可以表示为 1048,...等等。依次类推,用16个双字节整型数即可存放一个汉字点阵字形。"转"字的点阵数据及字形如附图的左半部分所示.将一个汉字逆时针旋转90度,就是把该汉字点阵的最右列作为旋转后点阵的第一行,次右列作为旋转后点阵的第二行,...,来形成一个旋转后的点阵字形。

附图的右半部分就是将"转"字旋转 90 度后的点阵数据和字形。

程序中,数组 old 中存放着“转”字的点阵数据.函数 turnleft 将该点阵数据逆时针旋转 90 度,旋转后的点阵数据存放在数组 new 中.函数 display 将旋转前后的点阵数据加以编辑,用字符 '.' 表示值为0的位,用字符 'x' 表示值为 1 的 位,从而将旋转前后的点阵按行输出其 16 进制数据及字形,如同图 13-3 和图 13-2 所表示的那样。

1040 ...x.....x...... 0000 .................
1040 ...x.....x...... 0200 ......x.........
1048 ...x.....x..X... 1640 ...x.xx..x......
FDFC xxxxxx.xxxxxxx.. 32E0 ..xx..x.xxx.....
2040 ..x......x...... 1259 ...x..x..x.xx..x
2844 ..x.x....x...x.. 1246 ....x..x...x..xx.
4BFE .x..x.xxxxxxxxx. FE44 xxxxxxx..x...x..
7C80 .xxxxx..x....... 13C8 ...x..xxxx..x...
0888 ....x...x...x... 1240 ...x..x..x......
09FC ....x..xxxxxxx.. 0200 ......x.........
0C08 ...xxx......x... 1120 ...x...x..x.....
E810 xxx.x......x.... 17FF ...x.xxxxxxxxxxx
4890 .x..x...x..x.... F120 xxxx...x..x.....
0860 ....x....xx..... 1D10 ...xxx.x...x....
0820 ....x.....x..... 1318 ...x..xx...xx...
0810 ..,,x.,....x..., 1010 ...x.,,,...x....
图 13-1 图 13-2

[程序]

#include <stdio.h>

#define EMPTY '.'

#define NONEMPTY 'X'

#define LEFT 0

#define RIGHT 1

main ()

{ static unsigned old[16]=

{ 0x1040,0x1040,0x1048,0xFDFC,0x2040,0x2844,

0x4BFE,0x7C80,0x0888,0x09FC,0x1C08,0xE810,

0x4890,0x0860,0x0820,0x0810

};

unsigned new[16];

trunleft( old,new );

display( old,new );

}

turnleft( old,new) 

unsigned old[],new[];

{ int row,k;

for ( row=0;row<16;row++ )

for ( k=0, __(1)__ ;k<16;k++ )

new[row]|=(( old[k]>> __(2)__ ) &1) << __(3)__ ;

}

display( old,new )

unsigned *old,*new;

{

char out[2][17],letter[2];

int row,col;

letter[0] = EMPTY;

letter[1] = NONEMPTY;

out[LEFT][16]=out[RIGHT][16]=__(4)__;

for ( row = 0;row<16;row++,old++,new++ )

{ for ( col = 0;col<16;++col )

{ out[LEFT][col] = letter[ ( __(5)__) &1];

out[RIGHT][col] = letter[ (__(6)__) &1];

}

printf("\n %4x %s ",*old,&out[LEFT][0]);

printf(" %4x %s",*new,&out[RIGHT][0]);

}

}

 
                                         答案
 

C语言

试题3

(1)*++pa

(2)*++pa

(3)*pa

(4)return(total)

(5)n<3 || n>MAXNUM

(6)p+n

试题8

(1)*decode()

(2)(num==255)?num:hum-1

(3)CODE *

(4)p→forward

(5)p→forward

(6)p→backward

(7)*s++

试题13

(1)new[row]=0

(2)row

(3)15-k

(4)'\0'

(5)*old>>(15-col)
(6)*new7>>(15-col)

    CASL

    试题2

    (1)SLL GR0,3

    (2)ADD GR0,A

    (3)LEA GR0,5,GR2

    (4)LEA GR2,0

    (5)LEA GR2,1,GR2

    (6)SUB GRO,WORK

    试题7

    (1)LD GR1,HXFFFF

    (2)LEA GR1,1,GR1

    (3)JMI ONEONE

    (4)JZE ENDPGM

    (5)ST GR0,UNPACK,GR2

    (6)EOR GR3,HXFFFF

    (7)ST GRO,UNPACK,GR2

    (8)JPZ LOOP2

    试题12

    (1)SRL GR0,0,GR2

    (2)OR GR0,NEWPN,GR2

    (3)LEA GR3,1,GR3

    (4)LEA GR2,1,GR2

    (5)LD GR0,CHRET,GR4

    (6)LEA GR3,-1,GR3

    (7)LEA GR1,1,GR1

    (8)LD GR4,SPSAVE

    上一页  [1] [2] 

    转帖于:软件水平考试_考试吧
    文章搜索  
    看了本文的网友还看了:
    软件水平考试权威辅导教材: 订书电话:010-62168566  更多>>>
    网友评论
    昵 称: *  评 分: 1分 2分 3分 4分 5分
    标题:   匿名发表    (共有条评论)查看全部评论>>
    版权声明 -------------------------------------------------------------------------------------
      如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。
    关于本站  网站声明  广告服务  联系方式  付款方式  站内导航  客服中心  友情链接  考试论坛  网站地图
    Copyright © 2004-2008 考试吧软件水平考试网 All Rights Reserved    
    中国科学院研究生院权威支持(北京) 电 话:010-62168566 传 真:010-62192699
    百度大联盟黄金认证  十佳网络教育机构  经营许可证号:京ICP060677