Przesunięcie arytmetyczne
From Atariki
(Różnice między wersjami)
Wersja z dnia 07:03, 10 paź 2012 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 07:04, 10 paź 2012 KMK (Dyskusja | wkład) Next diff → |
||
Linia 1: | Linia 1: | ||
- | [[6502]] oferuje rozkazy przesunięć w prawo (LSR) i w lewo (ASL). Przesunięcie logiczne w lewo, oferowane przez niektóre procesory (np. jako LSL w Morotolach 68k) nie różni się niczym od przesunięcia logicznego. 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ść. | + | [[6502]] oferuje rozkazy przesunięć w prawo (LSR) i w lewo (ASL). Przesunięcie logiczne w lewo, oferowane przez niektóre procesory (np. jako LSL w Morotolach 68k) nie różni się niczym od przesunięcia arytmetycznego. 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): | Rozkazu ASR w procesorze 6502 nie ma, można jednak ten brak dość prosto uzupełnić (dana w akumulatorze): |
Wersja z dnia 07:04, 10 paź 2012
6502 oferuje rozkazy przesunięć w prawo (LSR) i w lewo (ASL). Przesunięcie logiczne w lewo, oferowane przez niektóre procesory (np. jako LSL w Morotolach 68k) nie różni się niczym od przesunięcia arytmetycznego. 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.