Autor Wątek: assembler kłopot z listą  (Przeczytany 787 razy)

Offline stalker

  • Użytkownik

# Styczeń 05, 2012, 21:20:02
Nie mogę zrozumieć jak działa pewna sprawa. Mam wyświetlacz 7 segmentowy i zakodowane dla niego stany:

LIST:   fcb   %11000000,%11111001,%10100100,%10110000; '0', '1', '2', '3'

wołam konkretny stan przez wywołanie:

LDA   LIST,X   ;odczytaj kod znaku LED z LIST

Rozumiem że do akumulatora A trafia konkretny ciąg zer i jedynek. Jak tym jednak można sterować? Czy wartość X określa który kod z LIST zostanie użyty? Jak wołać konkretną wartość?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline głos

  • Użytkownik

# Styczeń 06, 2012, 01:07:05
Nie wiem co to za assembler ale przypomina ten z procesorów 65xx. Tam rozkaz LDA PAM,X oznaczał załadowanie do akumulatora wartości z pamięci spod adresu PAM+WX gdzie WX to wartość rejestru X. Poprzez zawartość rejestru X sterowałeś odwołaniem do konkretnej komórki pramięci (w zakresie od 0 do 255 od podanej bazy (PAM) bo rejestr X był ośmiobitowy, dodatkowo jeszcze mogą wchodzić w grę jakieś specyficzne ograniczenia adresacji procesora ale to powinno być opisane w dokumentacji danego modelu)

Zakładając analogię to w Twoim przypadku:
jeżeli do X załadujesz zero
   to LDA LIST,X załaduje do A wartość pierwszą (192 dziesiętnie) czyli '0'
jeżeli do X załadujesz trzy
   to LDA LIST,X załaduje do A wartość ostatnią (176 dziesiętnie) czyli '3'

Stąd poprzez wartość w rejestrze X możesz wybierać który kod z LIST zostanie użyty
« Ostatnia zmiana: Styczeń 06, 2012, 01:09:08 wysłana przez głos »

Offline prociomen007

  • Użytkownik

# Styczeń 06, 2012, 11:27:56
yhym, czyli jezeli x morze byc ośmio bitowy to na liście musze wypisac 256 przypadkow? No bo jezeli pojawi sie tam 10000000 to przesunie mnie poza listę.

Offline głos

  • Użytkownik

# Styczeń 06, 2012, 14:00:38
nie musisz, wykonaj operację AND %00000011 na wartości którą wpisujesz do rejestru X wynikiem będzie zawsze wartość z przedziału <0,3>