![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.5ベストアンサー
- 回答日時:
いまさらですが、
加算後の DAA は、
1. 加算結果の下位4ビットが 0AH 以上か、ハーフキャリーが立っていれば 06H を加算する。
2. さらに A0H 以上か、1 の結果でキャリーが立てば、60H を加算する。
ということだから、
ABH + FFH = AAH となり、そのあとに DAA を実行すれば、
下位4ビットが 0AH 以上だから、06H を加算して B0H となり、A0H 以上だから、さらに 60H を加算して 10H となる。
減算後の DAA は、加算の場合の 06H と 60H の加算が減算になるので、
EFH - 44H = ABH となり、そのあとに DAA を実行すれば、
06H を減算して A5H となり、さらに 60H を減算して 45H となる。
もはや BCD の計算にはなっていないので意味の無い値ですが。
No.4
- 回答日時:
16進加算は、単純に加算してオーバーフローしたビットが切り捨てられるだけです。
(8ビットのAレジスタを使用しているため)
この時、キャリーフラグが立つはずです。
17H+09H=20H、ABH+FFH=1AAH=AAH、EFH-44H=ABH でいいですね。
10進加算の場合は、オペランドの各ニブル(4ビット)の値が
0~9(BCD)に
なっていなければいけません。
各ニブルが10進数の1桁として演算します。
17H+09H=17+9=26=26H となりますが
ABH+FFH や EFH-44Hは、BCDではないのでうまく演算できないのだったと思います。
(詳しいことは忘れました)
下記URLをご参考に。
http://www.cs.shinshu-u.ac.jp/Lecture/SE2/Z80/le …
http://delegate.uec.ac.jp:8081/club/koken/~ubora …
No.3
- 回答日時:
本来DAAを用いての計算はBCD同士の計算を行った後、計算結果をBCDに戻すための命令で、ご質問の計算「ABH+FFH」や「EFH-44H」は間違った使用(元の数値BCDではない)をされているため、おかしな結果になっております。
詳細は忘れましたがDAAはアキュムレータ(Aレジスター)に対し、DAA補正フラッグ?をみてBCD補正のための補正を行っているはずで、まともな、入力値では正しく計算されるはずです。
No.1
- 回答日時:
10進の計算が いまいち うまくいってないように見えますが・・・。
17H+9Hの場合
20H
10進ならば
23+9になるはずです。
17Hが 23ですから。
上記で 26になるということは 17Hでは なく 17として扱われていることになります。
それで A0H以上の値は 正しく処理されてないのでしょう。
ちなみに ABH+FFHは
1AAHと なり、桁あふれした分は 切り捨てられて AAHとなるのでしょう。
どういうプログラムかは わかりませんが、仕様をきちんと決めて作りましょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱シーケンサ(Aシリーズ)で...
-
有効数字について 以前質問をし...
-
距離から緯度経度を求める方法
-
計算の丸め誤差の解消について
-
2進数、16進数、10進数のことを...
-
ExcelでPC(パソコン)によって...
-
2進数の足し算(C言語)
-
c languageで 簡単な質問があ...
-
floatの有効桁数
-
VBAでミリ秒まで出力する方法
-
BCD・HEX・BINについて
-
16進数 加算 減算 C言語
-
除算を使わずに10で割りたい。
-
浮動小数演算は実行環境の変化...
-
-2.18+2.11=-7.00000000000003E...
-
Double型について
-
ExcelのINT関数の計算結果がお...
-
”/”を使わずに割り算したいんで...
-
CRCの計算方法について
-
時刻の比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
c languageで 簡単な質問があ...
-
VB.net Double と...
-
16進数 加算 減算 C言語
-
ExcelでPC(パソコン)によって...
-
三菱シーケンサ(Aシリーズ)で...
-
有効数字について 以前質問をし...
-
除算を使わずに10で割りたい。
-
ExcelのINT関数の計算結果がお...
-
VB6.0での小数点の扱いについて
-
”/”を使わずに割り算したいんで...
-
2進数の足し算(C言語)
-
EXCELの関数"STDEV(標準偏差)"...
-
floatの有効桁数
-
VBAでミリ秒まで出力する方法
-
VB6のFIX関数での誤差について
-
Log関数に関する質問
-
100桁の計算ができなくて困って...
-
距離から緯度経度を求める方法
-
VBAでの割り算の余りの求め方
おすすめ情報