Witam
Jestem początkującą w pisaniu w assemblerze i mam do napisania program na DSM51, piszę w Jagodzie.. Mam coś takiego (to ma mi zamienić kod strzałki w prawo z klawiatury matrycowej na wartość określoną w tablicy KEY_CODE):
Zgodnie z tym co zrozumiałam z książki "Podstawy programowania mikrokontrolera...",
powinno spowodować zapisanie w A wartości 41H (a może 40H), w każdym razie nie 31, jak to ma miejsce. Jak to się dzieje, że na końcu programu A ma wartość 31, niezależnie od liczb wpisanych w bloku:
Instrukcję
rozumialam do tej pory tak, że zapisuje ona w rejestrze A wartość spod adresu określonego przez A+DPTR, czyli w tym przypadku 0BH=11 czyli jedenastą liczbę z bloku KEY_CODE.. Jednak wartość ta zawsze wynosi 31, niezależnie od liczb w bloku KEY_CODE.. Czemu? Gdzie robię błąd w rozumowaniu?
Proszę o jakieś wskazówki bo sama sobie już nie poradzę;/
M.
Jestem początkującą w pisaniu w assemblerze i mam do napisania program na DSM51, piszę w Jagodzie.. Mam coś takiego (to ma mi zamienić kod strzałki w prawo z klawiatury matrycowej na wartość określoną w tablicy KEY_CODE):
LJMP START
ORG 100H
START:
MOV DPTR, #KEY_CODE
MOV A, 0BH
MOVC A, @A+DPTR
LJMP $
KEY_CODE:
DB 30H,31H,32H
DB 33H,34H,35H
DB 36H,37H,38H
DB 39H,40H,41H
DB 42H,43H,44H
Zgodnie z tym co zrozumiałam z książki "Podstawy programowania mikrokontrolera...",
MOVC A, @A+DPTR
KEY_CODE:
DB 30H,31H,32H
DB 33H,34H,35H
DB 36H,37H,38H
DB 39H,40H,41H
DB 42H,43H,44H
Instrukcję
MOVC A, @A+DPTR
Proszę o jakieś wskazówki bo sama sobie już nie poradzę;/
M.