X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=as%2Fexam_fe%2F2010_10%2FQ12%2Frevl.casl;fp=as%2Fexam_fe%2F2010_10%2FQ12%2Frevl.casl;h=1424d8c903ca1d70f07f9060bb7e938f03f6a0a4;hb=bce17a4fab0759bd0818c44bdf3cd17edb388267;hp=0000000000000000000000000000000000000000;hpb=8b9bafa8e8927ad19968969f466c756f0aeac8a3;p=YACASL2.git diff --git a/as/exam_fe/2010_10/Q12/revl.casl b/as/exam_fe/2010_10/Q12/revl.casl new file mode 100644 index 0000000..1424d8c --- /dev/null +++ b/as/exam_fe/2010_10/Q12/revl.casl @@ -0,0 +1,41 @@ +LREVRS START + RPUSH + LD GR3,GR1 + LD GR4,GR2 + SUBA GR4,=1 + JZE LOOP2 + ADDA GR4,GR1 +LOOP1 LD GR5,0,GR3 ; + LD GR6,0,GR4 ; GR3 が指す語と GR4 が指す語の内容を + ST GR5,0,GR4 ; 入れ替える + ST GR6,0,GR3 ; + LAD GR3,1,GR3 ; GR3 を次の語に位置付ける + LAD GR4,-1,GR4 ; GR4 を一つ前の語に位置付ける + CPA GR3,GR4 + JMI LOOP1 +LOOP2 CALL REVRS + LAD GR1,1,GR1 + SUBA GR2,=1 + JNZ LOOP2 +FIN3 RPOP + RET + END +REVRS START + RPUSH + LD GR4,=0 ; 結果のビット列を初期化 + LAD GR2,15 ; ループカウンタ + LD GR3,0,GR1 ; GR3 ← ビット列 +LOOP SLL GR4,1 ; 結果のビット列を左シフト + SRL GR3,1 ; 元のビット列を右シフト + JOV ON + JZE FIN1 ; 元のビット列の残りのビットはすべてゼロ + JUMP OFF +ON OR GR4,=#0001 +OFF SUBA GR2,=1 + JMI FIN2 ; 16 ビット処理済み + JUMP LOOP +FIN1 SLL GR4,0,GR2 ; 結果のビット列を残りのビット数だけシフト +FIN2 ST GR4,0,GR1 + RPOP + RET + END