Mikrokontrolery
gr. 31a
Proszę szczegółowo opisać działanie rozkazów z grupy ld arg1, arg2. Jakie jest znaczenie argumentów arg1 oraz arg2 tych rozkazów? Jaką postać i jaką wartość mogą przyjmować te argumenty?
Ld arg1, arg2 ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr (np. X, Y, Z)
Arg1- rejestry 0-31
Arg2 – rejestr X, Y, Z,
mogą być z postinkrementacją (np. Rd, X+) Rd(X) XX+1
lub z predekrementacją X X-1 Rd(X)
(analogicznie w przypadku Z i Y)
PCPC +1
Flagi bez zmian
Proszę szczegółowo opisać działanie rozkazów z grupy brbs arg1, arg2. Jakie jest znaczenie argumentów arg1 oraz arg2 tych rozkazów? Jaką postać i jaką wartość mogą przyjmować te argumenty?
brbs ARG1,ARG2 – branch if bit in SREG is set. - może operować na dowolnej fladze – ARG1
– numer flagi (C – 0, Z – 1, N – 2 itd.), ARG2 – miejsce docelowe, znajdujące się nie dalej niż 63
bajty do przodu i 64 bajty do tyłu od rozkazu brbs. Zadziała, jeśli flaga, którą zadamy w ARG1 ma
wartość 1 – jest set. PC = PC+1 jeśli ARG1 = 0 albo PC=PC+1+k, gdzie k jest odległością od
miejsca docelowego, jeśli ARG1 jest 1. Ilość taktów – 1 jeśli warunek niespełniony, w innym
wypadku 2.
Jaki będzie skutek wykonania każdego z następującej sekwencji rozkazów (proszę omówić zarówno skutki wewnątrz struktury procesora, jak i na odpowiednich jego zaciskach):
ldi r16, 0x0f
out portd, r16
ldi r16, 0xf0
out ddrd, r16
in r16, portd
Jaka będzie zawartość rejestru r16 po wykonaniu ostatniego z rozkazów?
Proszę założyć, że do zacisków portu d nic nie jest podłączone.
Ldi r16,0x0f ; załadujemy jedynki do młodszej części tetrady
Out portd,r16 ; wysyłamy zawartość rejestru 16 na port D
Ldi r16, 0xf0 ; załadujemy jedynki do starszej części tetrady
Out ddrd,r16 ; wysyłamy zawartość rejestru 16 na DDRD
In r16, portd ; do rejestru 16 ładujemy zawartość portu D , czyli 0x0f
Jaka będzie zawartość rejestrów r16, r17 oraz flag Z, C po wykonaniu każdego z następującej sekwencji rozkazów:
ldi r16, 0xbc
ldi r17, 0x2b
andi r16, 0x7a
eor r16, r17
Jeżeli stanu jakiegoś rejestru albo flagi nie można podać, proszę wpisać „?”.
ldi r16, 0xbc ; r16=0xbc, r17=? Z=? C=?
ldi r17, 0x2b ; r16=0xbc, r17=0x2b Z=? C=?
andi r16, 0x7a ; r16=0x38, r17=0x2b Z=0 C=?
eor r16, r17 ; r16=0x13, r17=0x2b Z=0 C=?
Proszę napisać fragment programu realizujący rozgałęzienie: gdy którykolwiek z następujących bitów rejestru r1: zerowy lub pierwszy lub czwarty jest jedynką wówczas ma zostać wywołany podprogram o nazwie pp1, a w przeciwnym razie, tzn. gdy wszystkie wymienione bity są wyzerowane, ma być wywołany podprogram pp2. Pierwotna zawartość r1 może zostać zmieniona.
Andi r1, 0b 0000 1011 ; testujemy bity czy na 0,1 lub 4 bicie jest 1 (pierwotna zawartość r1 może być zmieniona dlatego andi bezpośrednio na r1 , w przeciwnym wypadku należałby skopiować r1 do innego rejestru np. mov r1, r16
brbs 1, dalej ; jeśli jest jakas 1 ;to idziemy do dalej a jeśli 0 to przejdzie do call pp2
call pp2 ; wywołujemy podprogram 2
dalej:
call pp1 ;wywołujemy podprogram 1
gr. 32a
Proszę szczegółowo opisać działanie rozkazów z grupy lds arg1, arg2. Jakie jest znaczenie argumentów arg1 oraz arg2 tych rozkazów? Jaką postać i jaką wartość mogą przyjmować te argumenty?
Proszę szczegółowo opisać działanie rozkazów z grupy brbc arg1, arg2. Jakie jest znaczenie argumentów arg1 oraz arg2 tych rozkazów? Jaką postać i jaką wartość mogą przyjmować te argumenty?
j.w.
Jaka będzie zawartość rejestrów r16, r17 oraz flag Z, C po wykonaniu każdego z następującej sekwencji rozkazów:
ldi r16, 0xbd
ldi r17, 0x0f
eor r16, r17
ori r16, 0x16
Jeżeli stanu jakiegoś rejestru albo flagi nie można podać, proszę wpisać „?”.
ldi r16, 0xbd ; r16=0xbd, r17=? Z=? C=?
ldi r17, 0x0f ; r16=0xbd, r17=0f Z=? C=?
eor r16, r17 ; r16=0xb2, r17=? Z=0 C=?
ori r16, 0x16 ; r16=0xb6, r17=? Z=0 C=?
Napisać fragment programu realizujący rozgałęzienie typu switch: gdy zawartość rejestru r16 jest równa 0x13 ma być wywołany podprogram o nazwie PP1, gdy zawartość ta wynosi 0x17 – ma być wywołany podprogram PP2, a w każdym innym razie – podprogram PP3.
ldi r16,liczba
cpi r16,13
breq pp1
cpi r16,17
breq pp2
rjmp pp3