前の命令に関係なく、DAAテーブルに設定された条件に基づいて、とにかくアキュムレータを変更するだけですか?
はい。ドキュメントは、DAAが何に使用されることを意図しているのかを示しているだけです。おそらくあなたはこのリンクの表を参照しています:
--------------------------------------------------------------------------------
| | C Flag | HEX value in | H Flag | HEX value in | Number | C flag|
| Operation | Before | upper digit | Before | lower digit | added | After |
| | DAA | (bit 7-4) | DAA | (bit 3-0) | to byte | DAA |
|------------------------------------------------------------------------------|
| | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
| ADD | 0 | 0-8 | 0 | A-F | 06 | 0 |
| | 0 | 0-9 | 1 | 0-3 | 06 | 0 |
| ADC | 0 | A-F | 0 | 0-9 | 60 | 1 |
| | 0 | 9-F | 0 | A-F | 66 | 1 |
| INC | 0 | A-F | 1 | 0-3 | 66 | 1 |
| | 1 | 0-2 | 0 | 0-9 | 60 | 1 |
| | 1 | 0-2 | 0 | A-F | 66 | 1 |
| | 1 | 0-3 | 1 | 0-3 | 66 | 1 |
|------------------------------------------------------------------------------|
| SUB | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
| SBC | 0 | 0-8 | 1 | 6-F | FA | 0 |
| DEC | 1 | 7-F | 0 | 0-9 | A0 | 1 |
| NEG | 1 | 6-F | 1 | 6-F | 9A | 1 |
|------------------------------------------------------------------------------|
私は言わなければならない、私はdafter命令仕様を見たことがない。C
表を注意深く調べると、命令の効果は、フラグとアキュムレータの値にのみ依存していることがわかりますH
。前の命令にはまったく依存していません。C=0
また、たとえば、、、およびアキュムレータの下の桁が4または5の場合はどうなるかはわかりません。そのため、このような場合H=1
はを実行するNOP
か、エラーメッセージなどを生成する必要があります。