这种题目不是人做的!有谁做出来了的
高程之CASL专题,99下午第4题:
一个15位的二进制数在 GR1 的前15位中,RG1的最高位为零。对此数进行奇偶校检。如果1的个数为偶数则最高位置1,为奇数则置0。总之,保持1的个数为奇数。
START
BEG PUSH 0,GR2
PUSH 0,GR3
LEA GR3,1
(1)
L1 SLL GR2,1
(2)
LEA GR3,1,GR3
L2 JZE L3
JMP L1
L3 (3)
ST GR3,WORK
ADD GR1,WORK
POP GR3
POP GR2
RET
WORK DS 1
END
我开始还憋住劲想,真的想不出来啊。
一看答案,击节而叹啊!!!这完全是思路的问题。
谁会想到竟用累加的办法实现奇偶校检。
答案为:
1。LEA GR2,0,GR1
2。FPZ L2
3。SLL GR3,15
有没哪位大哥做出来的,站出来亮亮!我是不行的。
有没哪位大哥做出来的,站出来亮亮!
问题点数:0、回复次数:25Top
1 楼erlengzi2003(二愣子)回复于 2003-09-02 21:10:06 得分 0
对二进制进行操作,只要判断最低位就可以知道这个数是奇数还是偶数。
这种思维对于我们这些以前使用高级语言惯了的人来说,的确挺新颖的!
Top
2 楼shiling18hjh(朽木)回复于 2003-09-02 21:22:40 得分 0
to erlengzi2003(二愣子) :理解错误!Top
3 楼norikos(zhulgxg)回复于 2003-09-03 00:11:59 得分 0
不好意思 我做出来了.
CASL一般多看几遍就可以做出来.Top
4 楼pldchild(老顽童)回复于 2003-09-03 10:24:50 得分 0
摘自老顽童网站《CASL辅导讲座下》:
[分析]1)从说明中已知,被转换的二进位串(一个字)放在 GR1 中。
2)第 6 行 "SLL GR2,1" 这条指令是处理奇偶校验用的,因此 GR2 也应该是工作单元,初始值为被处理数,故第 5 行( (1) )应该是 "LEA GR2,0,GR1"。
3)从第 4、5 行看,GR3 是一个计数器(统计值为 1 的位的个数),初始值为 1,即当 GR2 一个 1也没有时,其值为 1(奇校验)。
4)第 6 行 "SLL GR2,1" 将被处理数左移一位,需要判断最高位是否为 1,若是,计数器加 1,否则跳过这条指令。因最高位也是符号位,所以可用 "JPZ L2"( (2) )。
5)第 9 行(L2)"JZE L3"是移位结束条件,即移到结果为 0 时结束。
6)第 11、12、13 行,是在计数器值为奇数(即实际 1 的个数为偶数)时把被处理字 GR1 最高位变成 1。而计数器 GR3 为奇数即其最低位为 1,因此需把 GR3 的最低位变成最高位,所以第 11 行( (3) )应该是:SLL GR3,15Top
5 楼thefirstwind(准备学习PHP)回复于 2003-09-03 15:28:49 得分 0
哈哈,你要好好努力呀!Top
6 楼huoyanmao(魔法浪子)回复于 2003-09-03 19:48:13 得分 0
我倒
我看了对今年的高程又没有信心了Top
7 楼shiling18hjh(朽木)回复于 2003-09-04 16:19:51 得分 0
我看了对今年的高程又没有信心了
Top
8 楼lwb75(剑未出鞘)回复于 2003-09-04 17:07:05 得分 0
多做点练习吧Top
9 楼windeer(晴天)回复于 2003-09-04 22:53:28 得分 0
最开始的两个push着实让人伤脑筋
看不懂呢!
Top
10 楼windeer(晴天)回复于 2003-09-04 22:55:39 得分 0
现在还是不明白:
push的间接操作的原委。
push 0,GR3和push GR3 有什么不同
怎么要加个0Top
11 楼smuwcwt(Lotus/Domino)回复于 2003-09-04 23:03:53 得分 0
不知道,帮你顶一下Top
12 楼Hiei1234(飞影)回复于 2003-09-05 03:47:10 得分 0
简单,关键是算法的理解Top
13 楼snssh(雾失楼台)回复于 2003-09-05 12:36:41 得分 0
同意,强烈同意Top
14 楼x014(x014)回复于 2003-09-05 13:30:40 得分 0
我也是看了答案才做得来。Top
15 楼biostrong(撒旦)回复于 2003-09-05 13:35:03 得分 0
CASL考试一般只有两个重点,一、条件和无条件转移,二、计数循环Top
16 楼duandi(短笛)回复于 2003-09-05 13:36:24 得分 0
郁闷!!!!!!Top
17 楼emeng(叮当猫)回复于 2003-09-05 13:40:52 得分 0
没时间付息了Top
18 楼iicup(双杯献酒)回复于 2003-09-05 14:36:51 得分 0
我也没做出来。Top
19 楼cmslovehxh(关中刀客)回复于 2003-09-05 22:53:45 得分 0
push 0,GR3和push GR3 一样啊!Top
20 楼shiling18hjh(朽木)回复于 2003-09-06 14:01:54 得分 0
我以为我很差劲,没想还有比我更差劲的
push 0,GR3和push GR3 一样啊!怎么回一样呢?
push 0,GR3是基址+变址寻址方式(0+GGR3)
push GR3是寄存器寻址方式
在CASL中是没有寄存器寻址方式的。
Top
21 楼sdik(sdik)回复于 2003-09-06 20:07:08 得分 0
真想问问你是怎么回事1Top
22 楼charlie0895(命----世上本没有路,我多走几次也就成了路.... )回复于 2003-09-06 21:34:19 得分 0
casl是高程下午的送分题呀!听说要过下午的,casl一定要全对的,累加的方法来做校检并不是什么新鲜事了,好好看书吧Top
23 楼sqsqsqsq(的卡尔)回复于 2003-09-06 22:20:29 得分 0
我认为CASL题目一定要抓住得分,还有就是最后一题关算法的也一定要得分,这样,考出来就大有希望了。不过上午试题有没有什么特别复习方法,上次上午我差6分,下午过17分。哎,瘸子的说。Top
24 楼thefirstwind(准备学习PHP)回复于 2003-09-07 20:45:51 得分 0
push 0,grk是push adr[,grk]
push grk是push grk
前者是正确的语法,后者是不允许的!Top
25 楼fingerfoolcn(付正)回复于 2003-09-07 21:17:39 得分 0
拿全分是对的
但是这对于一般的人来说确实不是很好做到的
希望大家都能通过考试Top



