2 つの 24 ビット数値 M と N を乗算し、積を p のメモリ ロケーション に格納しようとしています$1100
。
md 1100 を実行したときの予想される出力は次のようになるはず $07336BF94116
ですが、取得しています 07 1A 48 58 - 41 16 8D 0C - 92 C2 82 85 - 48 B9 79 03
私のプログラムの何が問題なのかわかりませんが、助けていただければ幸いです。
org $1000
M dc.b $12,$34,$56 ; define the value of M
N dc.b $65,$43,$21 ; define the value of N
org $1100 ; define the memory addresses for P
P ds.b 6 ; the product should be $07336BF94116 when md 1100
org $2000 ;
ldy M+1
ldd N+1
emul
std P+4
ldaa M
ldab N
mul
std P
ldab M
ldaa #0
ldy N+1
addd P+2
xgdy
adcb P+1
adca P
ldab N
ldaa #0
ldy M+1
addd P+2
xgdy
adcb P+1
adca P
swi
end
このコードをdragon12-plus2にアップロードしています。