Rozszerzenie arytmetyczne
From Atariki
(Różnice między wersjami)
Wersja z dnia 19:23, 12 paź 2012 KMK (Dyskusja | wkład) (red. 2) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) (request) |
||
Linia 6: | Linia 6: | ||
eor #$ff | eor #$ff | ||
- | Pomysł został zaprezentowany przez [[mono]]. Druga szybsza i krótsza metoda (zaproponowana przez [[xxl]]-a): | + | Pomysł został zaprezentowany przez [[mono]]. Druga szybsza i krótsza metoda: |
ora #$7f | ora #$7f |
Aktualna wersja
Kod dokonuje rozszerzenia arytmetycznego danej z rozmiaru bajtu do 16-bitowego słowa, tzn. powielenia bitu znaku tak, żeby z 8-bitowej wartości dodatniej powstała 16-bitowa wartość dodatnia, a z ujemnej - ujemna. Daną wejściową procedury - znajdującą się w akumulatorze - jest bajt do rozszerzenia. Daną wyjściową - do odebrania również w akumulatorze - jest starszy bajt 16-bitowego słowa powstałego po rozszerzeniu.
asl lda #0 adc #$ff eor #$ff
Pomysł został zaprezentowany przez mono. Druga szybsza i krótsza metoda:
ora #$7f bmi _rts lda #$00 _rts