Przesunięcie arytmetyczne

Z Atariki mirror
Wersja z dnia 08:51, 1 paź 2026 autorstwa imported>Atariki recovery (Reconstructed from archived HTML; see provenance manifest)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

6502 oferuje rozkazy przesunięć w prawo (LSR) i w lewo (ASL). Tak zwane przesunięcie arytmetyczne w lewo (ASL) nie różni się niczym od logicznego (oferowanego przez niektóre procesory, np. jako LSL w Motorolach 68k). Natomiast w przypadku przesunięcia w prawo zachodzi istotna różnica: w przesunięciu logicznym (LSR) bit 7 uzyskuje wartość 0, natomiast przy przesunięciu arytmetycznym (ASR) bit 7, jako bit znaku, zachowuje swoją poprzednią wartość.

Rozkazu ASR w procesorze 6502 nie ma, można jednak ten brak dość prosto uzupełnić (dana w akumulatorze):

    cmp #$80
    ror

Autorem rozwiązania jest mono.