
PICマイコンのアセンブラルーチンについて
PICマイコンのアセンブラについて教えていただきたく投稿しました。
http://orange.zero.jp/electronics/pic/pic.html
上記のサイトについてです。
『●「整数演算」』の
『◇8×8=16ビットの乗算』についてです。
つまり、下記リンクの演算ルーチンについて、大まかな流れだけでいいので解説していただけないでしょうか。
http://orange.zero.jp/electronics/pic/mul816.txt
よろしくお願い致します。

No.1ベストアンサー
- 回答日時:
1234×4567 の計算(ただし、10進数)
まず、筆算で、1234×4567 の計算をしてみてください。
乗数(4567)の下の方の桁から、ひとつずつ掛けて、しかも、その結果を、一桁ずつずらして書きますよね。
それは、実は、以下のような計算をしていることになります。
1)4567 最下位を見る → 7
2) 1234 と 7 を掛ける 1234×7 = 8638
3) この答えを保持しておく s ← 8638
4) 被乗数(1234)を、一桁左側にシフトする(つまり、10倍する)12340
5) 乗数(4567)を、一桁右にシフトする(つまり、10で割る) 456
6)新しくできた、乗数と(被乗数の最下位)を掛ける 12340×6 = 74040
7) この結果を s に足し込む s = s + 74040 = 82678
8) 4) にかえって繰り返す
以上は、10進数のお話です。
これを、2進数でやろうと思うと、
・そもそも、数字は 0 か 1 しかない。つまり、2) とか 6) は、実際にはかけ算をする必要はなく、「何も足さない」か、「そのまま(1をかけたもの)足す」かどちらかしかない。
・一桁のシフトは、文字通りシフトで実現できる。
ということになります。
2進数でも、筆算でかけ算をすることができますから、やってみると事情が飲み込めると思います。
おおざっぱには、こういう計算をやっています。
解答ありがとうございます。とても分かりやすくて助かりました。
別の質問なのですが、もしよろしければ、
http://okwave.jp/qa/q7121380.html
こちらにも解答をいただけるとありがたいです。
16ビットどうしの除算なのですが、乗算の場合と同じように、筆算で考えればいいのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0での小数点の扱いについて
-
c languageで 簡単な質問があ...
-
浮動小数演算は実行環境の変化...
-
Log関数に関する質問
-
PICで小数点の演算
-
計算の丸め誤差の解消について
-
Double型について
-
ExcelのINT関数の計算結果がお...
-
最早開始時間と最遅完了時刻を...
-
【C++】関数ポインタの使い方
-
既定のコンストラクタがありま...
-
Aの値からBの値を除するとは??
-
「Aに対するBの割合」と「Aに対...
-
信頼区間の1.96や1.65ってどこ...
-
a^2の√=a が成り立たない場合
-
配列をnビットシフトする
-
数学 一次関数 関数 y=-3/4x+k(...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
プログラムでの数字につく”f”の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
有効数字について 以前質問をし...
-
c languageで 簡単な質問があ...
-
EXCELの関数"STDEV(標準偏差)"...
-
ExcelでPC(パソコン)によって...
-
三菱シーケンサ(Aシリーズ)で...
-
floatの有効桁数
-
255の2の補数、B'00000001'が-...
-
O(n log n)について2
-
符号誤り率の計算は例題でどの...
-
CRCの計算方法について
-
VB.net Double と...
-
コンピューターは指数関数をど...
-
16進数 加算 減算 C言語
-
ExcelのINT関数の計算結果がお...
-
C言語でセルオートマトンを作成...
-
BCD・HEX・BINについて
-
”/”を使わずに割り算したいんで...
-
三角比の俯角の計算
-
除算を使わずに10で割りたい。
-
VBAでミリ秒まで出力する方法
おすすめ情報