试题 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
- 推荐给朋友
- 收藏此页
·2008年下半年软考信息系统项目管理师试题(下午II) (2008-12-21 22:39:30)
·2008年下半年计算机软考网络工程师试题(下午) (2008-12-21 22:26:13)
·2008下半年软考系统分析师考试试题(下午)II (2008-12-21 22:20:49)
·2008年下半年计算机软考程序员试题(下午) (2008-12-21 22:18:18)
·2008年下半年计算机软考程序员试题(上午) (2008-12-21 22:11:38)