乗除算
65C816には乗除算機能が無いため、乗除算をする場合はI/Oポートを通してコプロセッサに値を渡して処理します。BGモード7の拡縮回転用マトリクスを使って計算しています。
「2の累乗を掛ける」、「2の累乗で割る」はそれぞれ左シフトと右シフトを繰り返せば可能なのでコプロセッサに値渡しをする必要性はあまりありませんが、24bit演算をする場合はコプロセッサに値渡しをする必要があります。
符号付8bit x 8bit
LDA #$16 STA $4202 LDA #$24 STA $4203 REP #$20 NOP LDA $4216 |
LDA #$2416 STA $4202 NOP NOP LDA $4216 |
符号付16bit x 8bit
SEP #$20 LDA #$34 STA $211B LDA #$12 STA $211B LDA #$56 STA $211C REP #$20 NOP NOP NOP NOP NOP NOP NOP LDA [$2134] |
符号付16bit / 8bit
LDA #$6759 STA $4204 SEP #$20 LDA #$35 STA $4206 REP #$20 NOP NOP NOP NOP NOP NOP NOP LDA $4214 LDX $4216 |
上に挙げた以外の乗除算を行う場合は、自分で演算ルーチンを組む必要があります。以下、拾い物のコード
符号なし16bit x 8bit
LDY $02 |
符号なし16bit x 16bit
L DA $03 |
符号なし16bit / 16bit
REP #$20 |
偏角を求める
PHX |