Witam
Mam do wykonania 2zadania, nie było mnie na lekcji mam tylko odpisane lekcje ale nie umiem tego zrobić otóż:
1.W rejestrze A umieść 1zmienną, w rejestrze B drugą zmienną.Używając stosu zamień te zmienne miejscami
2.Dodaj do siebie dwie dowolne liczby 16-bitowe,wynik umieść w pamięci wewnętrznej RAM.
Musze napisać do tych zadań program.Byłbym bardzo wdzięczny za pomoc
Zadanie do wykonania na mikrokontrolerze
do zadania 1
do zadania 2
Kod: Zaznacz cały
ZMIENNA1 EQU 1
ZMIENNA2 EQU 2
MOV A,ZMIENNA1
MOV B,ZMIENNA2
PUSH ACC ;odłozenie na stos
PUSH B
POP ACC ;pobranie ze stosu(to co było ostatnio odłożone)
POP B ;po tej operacji w B jest ZMIENNA1
;natomiast w A jest ZMIENNA2
;tak na marginesie to do zamiany zawartości dwóch rejestrów jest
;specjakny rozkaz
XCH A,B
Kod: Zaznacz cały
LICZBA1_H EQU 1 ;bardziej znaczący bajt liczby 1
LICZBA1_L EQU 2 ;mniej znaczący bajt liczby 1
LICZBA2_H EQU 3 ;bardziej znaczący bajt liczby 2
LICZBA2_L EQU 4 ;mniej znaczący bajt liczby 2
;najpierw dodajemy mniej znaczące bajty
MOV A,LICZBA1_L ;pierwszy składnik do akumulatora
ADD A,LICZBA2_L ;dodaje drugi sładnik
;jeżeli wystąpiło przepełnienie, to została ustawiona flaga C
MOV R5,A ;najmniej znaczącą część wyniku umieszcza w R5
;teraz dodawanie bardziej znaczących bajtów
;z uwzglednieniem przeniesienia z poprzedniego dodawania
MOV A,LICZBA1_H ;pierwszy składnik do akumulatora
ADDC A,LICZBA2_H ;dodaje drugi sładnik z przeniesieniem
MOV R6,A ;bardziej znaczącą część wyniku umieszcza w R6
;wynik dodawania dwóch liczb 16-bitowych może przekroczyć
;pojemność 2 bajtów dlatego trzeba przewidzieć trzeci bajt
;w którym pojawi się 1 jeżeli nastąpiło przeniesienie
;z ostatniej operacji dodawania
MOV A,#0 ;zerujemy akumulator
ADDC A,#0 ;dodajemy tylko przeniesienie
MOV R7,A ;najbardziej znaczącą część wyniku umieszcza w R7
;wynik mamy w trzech komórkach pamięci RAM (w rejestrach R7,R6,R5)