Rozszerzenie arytmetyczne: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Xxl (dyskusja | edycje)
optymalizacja
request
 
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 6: Linia 6:
     eor #$ff
     eor #$ff


Druga szybsza i krótsza metoda
Pomysł został zaprezentowany przez [[mono]]. Druga szybsza i krótsza metoda:


     ora #$7f
     ora #$7f
     bmi _rts
     bmi _rts
     lda #$00
     lda #$00
 
_rts
Pomysł został zaprezentowany przez [[mono]].


[[Kategoria:Niezbędnik kodera]]
[[Kategoria:Niezbędnik kodera]]

Aktualna wersja z 12 paź 2012, 21:38

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