X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=as%2Ffe_tests%2F2009_04%2FQ12%2Fmuls.casl;fp=as%2Ffe_tests%2F2009_04%2FQ12%2Fmuls.casl;h=21b70f304fa13b49a1e00f6b2b3d61d752ba6820;hb=58ee37be62a5e359d0f6eb603cc86b5692f74b90;hp=0000000000000000000000000000000000000000;hpb=85744703060a90c21ee325d3a692f80233bc281f;p=YACASL2.git diff --git a/as/fe_tests/2009_04/Q12/muls.casl b/as/fe_tests/2009_04/Q12/muls.casl new file mode 100644 index 0000000..21b70f3 --- /dev/null +++ b/as/fe_tests/2009_04/Q12/muls.casl @@ -0,0 +1,27 @@ +;平成21年 春期 基本情報技術者 午後 問12 +MULS START ; 32ビット×16ビット→32ビット + RPUSH + LAD GR6,0 ; 積 上位語の初期化 + LAD GR7,0 ; 積 下位語の初期化 + LD GR4,0,GR1 ; 被乗数 上位語の取出し + LD GR5,1,GR1 ; 被乗数 下位語の取出し +LP SRL GR2,1 ; 乗数を1ビット右にシフト + JOV ADD32 + JZE FIN + JUMP NEXT ; 加算処理をスキップ +ADD32 ADDL GR6,GR4 ; 32ビット+32ビット→32ビット + ADDL GR7,GR5 + JOV ADJ1 + JUMP NEXT +ADJ1 ADDL GR6,=1 ; けた上げ処理 +NEXT SLL GR4,1 ; 被乗数(32ビット)を1ビット左にシフト + SLL GR5,1 + JOV ADJ2 + JUMP LP +ADJ2 OR GR4,=1 + JUMP LP +FIN ST GR6,0,GR3 ; 乗算結果の格納 + ST GR7,1,GR3 + RPOP + RET + END