CASL IIの課題、その1(提出は今月28日)
僕の回答
KADAI01 START IN BUF,LENG LAD GR0,0 LD GR1,LENG LD GR3,BUF SUBA GR3,='0' CPA GR1,=1 JZE NM1 CPA GR1,=2 JZE NM10 ; LD GR1,GR3 SLA GR1,6 ADDA GR0,GR1 LD GR1,GR3 SLA GR1,5 ADDA GR0,GR1 SLA GR3,2 ADDA GR0,GR3 LAD GR2,1 LD GR3,BUF,GR2 SUBA GR3,='0' LD GR1,GR3 SLA GR1,3 ADDA GR0,GR1 SLA GR3,1 ADDA GR0,GR3 LAD GR2,2 LD GR3,BUF,GR2 SUBA GR3,='0' ADDA GR0,GR3 JUMP SETTING NM10 LD GR1,GR3 SLA GR1,3 ADDA GR0,GR1 SLA GR3,1 ADDA GR0,GR3 LAD GR2,1 LD GR3,BUF,GR2 SUBA GR3,='0' ADDA GR0,GR3 JUMP SETTING NM1 ADDA GR0,GR3 ; SETTING LAD GR1,4 ;中央値 LAD GR2,0 ;最小値 LAD GR3,9 ;最大値 SEARCH CPA GR0,DATA,GR1 JZE GOAL JPL SEARCHPL ;SEARCHMI SUBA GR1,=1 LD GR3,GR1 ADDA GR1,GR2 SRA GR1,1 JUMP JADGE SEARCHPL ADDA GR1,=1 LD GR2,GR1 ADDA GR1,GR3 SRA GR1,1 JADGE CPA GR3,GR2 JMI FAIL JUMP SEARCH FAIL LD GR0,=#FFFF ;GR0に-1を格納(探索失敗) JUMP FIN GOAL LAD GR0,DATA,GR1 ;GR0に探索値のアドレスを格納(探索成功) FIN RET DATA DC 0,12,255,372,421,560,687,726,874,999 BUF DS 3 LENG DS 1 END
問題文が短すぎたので、細かい仕様は自分で勝手に決めた。あとで文句言われたって知るもんか。
- 探索値は3桁までの自然数
- 配列は昇順に整列済み
- 探索成功時は値のアドレスを、失敗時は0xFFFFをGR0に格納
ちょっと長すぎる気がするので、もうちょっとシェイプアップしたいところ。