From 8b9bafa8e8927ad19968969f466c756f0aeac8a3 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Thu, 7 Jun 2018 21:55:35 +0900 Subject: [PATCH] =?utf8?q?=E3=82=B5=E3=83=B3=E3=83=97=E3=83=AB=E3=81=AB?= =?utf8?q?=E3=80=81count1=E3=81=A8call=5Fcount1=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- as/sample/call_count1.casl | 5 +++++ as/sample/count1.casl | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 as/sample/call_count1.casl create mode 100644 as/sample/count1.casl diff --git a/as/sample/call_count1.casl b/as/sample/call_count1.casl new file mode 100644 index 0000000..7001296 --- /dev/null +++ b/as/sample/call_count1.casl @@ -0,0 +1,5 @@ +MAIN START + LAD GR1,32764 + CALL COUNT1 + RET + END diff --git a/as/sample/count1.casl b/as/sample/count1.casl new file mode 100644 index 0000000..d9f4837 --- /dev/null +++ b/as/sample/count1.casl @@ -0,0 +1,18 @@ +COUNT1 START ; +; 入力 ; GR1:検索する語 +; 処理 ; GR1 中の'1'のビットの個数を求める +; 出力 ; GR0:GR1 中の'1'のビットの個数 + PUSH 0,GR1 ; + PUSH 0,GR2 ; + SUBA GR2,GR2 ; Count = 0 + AND GR1,GR1 ; 全部のビットが'0'? + JZE RETURN ; 全部のビットが'0'なら終了 +MORE LAD GR2,1,GR2 ; Count = Count + 1 + LAD GR0,-1,GR1 ; 最下位の'1'のビット 1 個を + AND GR1,GR0 ; '0'に変える + JNZ MORE ; '1'のビットが残っていれば繰返し +RETURN LD GR0,GR2 ; GR0 = Count + POP GR2 ; + POP GR1 ; + RET ; 呼出しプログラムへ戻る + END ; -- 2.18.0