#10:掛け算プログラムを実行しよう - その2
ここでは、シフト命令を使った掛け算プログラムを実行します。
$ pycasl multi2.cas
$ pycomet -d multi2.com
「53 × 93」を求めるには、まず「93」の各桁を分解して、「53 x 3」「53 x 9」を計算します。それから、それぞれの計算結果の桁をずらして、足し算します。 53
x 93
-----
53 x 3
+ 53 x 9
-----
159
+477_
-----
4929
掛ける数の桁数だけ、足し算を繰り返す 110101
x 1011101
-------------
110101 x 1
110101 x 0
110101 x 1
110101 x 1
110101 x 1
110101 x 0
+ 110101 x 1
--------------
110101
000000_
110101__
110101___
110101____
000000_____
+ 110101______
--------------
1001101000001
1. 計算結果を初期化
2. 掛けられる数を用意する
3. 掛ける数を用意する
4. 掛ける数の最下位ビットが「1」か調べる
5. 「0」だったら、7にジャンプ
6. 計算結果に、掛けられる数を足す
7. 掛けられる数を1ビット左にシフトする
8. 掛ける数を1ビット右にシフトする
9. ゼロでなかったら、4にもどる
10. 終了
; 掛け算2
MAIN START
LAD GR0, 0
LD GR1, DATA1
LD GR2, DATA2
CALL MULTI
ST GR0, ANS
RET
DATA1 DC 03
DATA2 DC 04
ANS DS 1
END
MULTI START
RPUSH
LOOP ADDA GR0, GR1
SUBA GR2, =1
JNZ LOOP
RPOP
RET
END
CASLⅡ- 乗算の計算
http://masudahp.web.fc2.com/casl2/casl2210.html
アセンブリ言語CASLⅡでの乗算のやり方
https://arcanum.work/contents?id=21
CASLIIアセンブラ & シミュレータ PyCASL2 & PyCOMET2
http://www.image.med.osaka-u.ac.jp/member/nakamoto/pycasl2/index.html
CASL - Wikipedia
https://ja.wikipedia.org/wiki/CASL
アセンブラ言語CASL2の仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/CASL2spec.html#2-3
システムCOMET2の仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/COMET2spec.html
CPU - コンピュータの基礎知識 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/computer/CPU.html