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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- 英語 SPECS の所の LENGTH というのは、BARREL LENGTH なのか?全体の長さなのか? 1 2022/04/27 20:05
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- 英語 WEIGHT というのは、 マガジン や ストック を含んだ WEIGHT なのでしょうか? 1 2022/04/28 20:43
- その他(アニメ・マンガ・特撮) 元画像を探していただきたいです。トムとジェリーのアニメ内でのものです。これはプリ画像(https:/ 1 2022/06/13 15:51
- 演劇・オペラ・ミュージカル 中原めいこ作品『君たちキウイ・パパイア・マンゴーだね。』は露軍のウクライナ侵攻事件を暗示しているの? 3 2022/04/01 21:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c languageで 簡単な質問があ...
-
VB.net Double と...
-
有効数字について 以前質問をし...
-
16進数 加算 減算 C言語
-
10次の多項式を求めるプログラ...
-
z80について
-
VB6.0での小数点の扱いについて
-
コンピューターは指数関数をど...
-
EXCELの関数"STDEV(標準偏差)"...
-
2進数の0.2?
-
浮動小数点演算を固定小数点演...
-
ExcelのINT関数の計算結果がお...
-
floatの有効桁数
-
Pythonについてなのですが、小...
-
O(n log n)について2
-
VBAでの割り算の余りの求め方
-
ラズベリーパイ>MM-TXS03で温度...
-
浮動小数演算は実行環境の変化...
-
Double型について
-
double型からfloat型への型変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
ExcelでPC(パソコン)によって...
-
ExcelのINT関数の計算結果がお...
-
16進数 加算 減算 C言語
-
VB.net Double と...
-
floatの有効桁数
-
三菱シーケンサ(Aシリーズ)で...
-
c languageで 簡単な質問があ...
-
除算を使わずに10で割りたい。
-
VBAでミリ秒まで出力する方法
-
VBAでの割り算の余りの求め方
-
VB6.0での小数点の扱いについて
-
VB6のFIX関数での誤差について
-
有効数字について 以前質問をし...
-
100桁の計算ができなくて困って...
-
浮動小数演算は実行環境の変化...
-
EXCELの関数"STDEV(標準偏差)"...
-
BCD・HEX・BINについて
-
コンピューターは指数関数をど...
-
乱数 なぜ剰余を使うのか
おすすめ情報