Czemu 2x trzeba dekrementować?
Czym się różni ret od reti?
Rozkaz RET to jest rozkaz skoku który pobiera adres ze stosu i do niego skacze. (to MOŻE być LCALL , ale wcale nie musi)
Rozkaz RETI do rozkaz skoku Z (a nie do) obsługi przerwania do "Programu głównego" w przypadku skrzyżowania do pętli głównej. W odróżnieniu od RET pobiera dwie wartości ze stosu.
Co robi djnz?
DJNZ zmniejsza zawartość wskazanej zmiennej o jeden i, jeśli wynikiem dekrementacji jest wartość różna od zera, wykonuje skok pod podany adres.
Jaka jest róznica miedzy ljmp – ajmp?
„Absolute Jump”, skocz bezwarunkowo na stronie, licznik rozkazów zostaje zwiększony o 2, następnie do jego bitów 0–10 zostaje wpisany 11–bitowy adres bezpośredni podany jako parametr.
LJMP powoduje wykonanie bezwarunkowego skoku pod wskazany adres przez załadowanie do licznika rozkazów drugiego i trzeciego bajtu kodu instrukcji. Adres skoku może znaleźć się w dowolnym miejscu 64K-bajtowego obszaru pamięci programu. Stan żadnego ze wskaźników nie ulega zmianie.
Gdzie się zaczyna i kończy przerwanie?
Ile mamy pamięci do dyspozycji jeśli w programie (dowolnym) będą wykorzystane 2 przerwania?
Po co jest:
PUSH PSW - wrzucenie na stos wartości rejestru stanu programu
PUSH ACC - wrzucenie na stos wartości z akumulatora
Czym się różni MOVX od MOV?
mov to instrukcja przeniesieania wartości z/do pamięci wewnętrnej/rejestrów uC, movx to instrukcja dostępu do zewnętrznej pamięci danych (fizycznie inny układ scalony niż uC)
Do czego służy AJMP?
ADDC powoduje dodanie zawartości wskazanej zmiennej, akumulatora oraz bitu przeniesienia i pozostawia wynik operacji w akumulatorze. Wskaźnik przeniesienia i pomocniczy wskaźnik przeniesienia są ustawiane, jeśli nastąpiło przeniesienie odpowiednio z 7 lub 3 bitu w przeciwnym razie (brak przeniesienia) wskaźniki są zerowane.
Czy potrzebna jest komend CLR TF0 co się stanie jeżeli ją usuniemy. Jak bedzie działać wówczas przerwanie?
W DSM 8051, CLR TF0 nie jest potrzebne. uC samoistnie usuwa flagę timera, gdy wchodzi do przerwania.