アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは!

アセンブラによるコーディングをしているのですが8ビット以上の​数値を扱うことができません。
C言語であれば、「int i=2000;」などのように簡単にできるのですが、私の環境で​は256までの数値しか扱えません。
......
20万までの数値を扱いたいのですが、何か良い方法はないでしょ​うか?
アルゴリズムもしくはヒントを教えていただけたら助かります。
どうか知っている方がいらっしゃったらよろしくお願いします。

A 回答 (3件)

一桁の数字同士の足し算・かけ算しか知らなくても、桁上がりを適切に扱えば、何桁の計算でも出来るのと同じやり方を使います。


桁上がりの数字のことをキャリーと言います。

それぞれ24bitのX,Yについて、X + Y を計算するとして、Xの下8bit + Yの下8bit => 和の下8bit + キャリーの2^8倍、Xの中8bit + Yの中8bit + さっきのキャリー => 和の中8bit + キャリーの2^8倍、・・・・
    • good
    • 0

複数のレジスタをつなげて多バイト長のデータを扱う命令があれば一発ですが、そんなしゃれたものはないってことだったら、メモリ上に展開するしかないでしょう。

演算はレジスタに入る長さ(今回は8ビット?)に分割して行い、バイトをまたぐ繰り上げ繰り下げが発生すれば、それはオーバーフローフラグを見て自分で管理することになります。

200,000d=30D40h(符号無し整数の場合)なので、これを格納するメモリは3バイト必要です。03h/D4h/40hの三つに分割してメモリに置くことになりますね。
    • good
    • 0

20万を二進数に直すと、18ビットですが、


これを8ビット環境で扱っている例はあるんですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!