Rozszerzenie arytmetyczne

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 19:22, 12 paź 2012
KMK (Dyskusja | wkład)
(red.)
← Previous diff
Wersja z dnia 19:23, 12 paź 2012
KMK (Dyskusja | wkład)
(red. 2)
Next diff →
Linia 6: Linia 6:
eor #$ff eor #$ff
-Druga szybsza i krótsza metoda (zaproponowana przez [[xxl]]-a):+Pomysł został zaprezentowany przez [[mono]]. Druga szybsza i krótsza metoda (zaproponowana przez [[xxl]]-a):
ora #$7f ora #$7f
Linia 12: Linia 12:
lda #$00 lda #$00
_rts _rts
- 
-Pomysł został zaprezentowany przez [[mono]]. 
[[Kategoria:Niezbędnik kodera]] [[Kategoria:Niezbędnik kodera]]

Wersja z dnia 19:23, 12 paź 2012

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 (zaproponowana przez xxl-a):

   ora #$7f
   bmi _rts
   lda #$00
_rts
Personal tools