99的casl试题4
本子程序是对15位二进位窜,求它得奇校验位,生成16位二进位窜,使16位二进位窜中有奇数个1。
进入此子程序,15位二进位窜在GR1的第1位至第15位,并假定GR1的第0位是0,求得的奇校验位装配在GR1的第0位上。
START
BEG PUSH 0,GR2
PUSH 0,GR3
LEA GR3,1
(1) LEA GR2,0,GR1
L1 SLL GR2,1
(2) JPZ L2
LEA GR3,1,GR3
L2 JZE L3
JMP L1
L3 (3) SLL GR3,15
ST GR3,WORK
ADD GR1,WORK
POP GR3
POP GR2
RET
WORK ds 1
END
(1)-(3)表示填空的内容,我不明白括号(2)那里怎么能实现统计1的个数。那个JPZ应该是对整个GR2的判定吧,不是对移出的那一位的判断阿,那既然整个gr2大于等于0就跳转,那LEA GR3,1,GR3怎么能统计出1的个数阿?
还有“GR1的第1位至第15位”这个第一位是从哪边数起的阿?左边第一位是第0位还是第15位阿?