lab2 (3)


Komentarze do programów w Asamblerze

Maciej Jeszke

Program klawiatura:

NAME klawiatura1

SPR0: MOV C,P0.0 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu zerowego.

JC SPR1 ;Skok do etykiety SPR0 programu jeśli znacznik jest ustawiony (wartość 1)

MOV P2,#cyfra0 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra0

SPR1: MOV C,P0.1 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu pierwszego.

JC SPR2 ;Skok do etykiety SPR1 programu jeśli znacznik jest ustawiony (war. 1)

MOV P2,#cyfra1 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra 1

SPR2: MOV C,P0.2 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu drugiego.

JC SPR3 ;Skok do etykiety SPR1 programu jeśli znacznik jest ustawiony (war. 1)

MOV P2,#cyfra2 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra 2

SPR3: MOV C,P0.3 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu trzeciego.

JC SPR4 ;Skok do etykiety SPR1 programu jeśli znacznik jest ustawiony (war. 1)

MOV P2,#cyfra3 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra 3

SPR4: MOV C,P0.4 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu czwartego.

JC SPR5 ;Skok do etykiety SPR1 programu jeśli znacznik jest ustawiony (war. 1)

MOV P2,#cyfra4 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra 4

SPR5: MOV C,P0.5 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu piątego.

JC SPR6 ;Skok do etykiety SPR1 programu jeśli znacznik jest ustawiony (war. 1)

MOV P2,#cyfra5 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra 5

SPR6: MOV C,P0.6 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu szóstego.

JC SPR7 ;Skok do etykiety SPR1 programu jeśli znacznik jest ustawiony (war. 1)

MOV P2,#cyfra6 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra6

SPR7: MOV C,P0.7 ;Wpisanie do znacznika przeniesienia wartości jednobitowej z portu P0 bitu siódmego.

JC SPR0 ;Skok do etykiety SPR1 programu jeśli znacznik jest ustawiony (war. 1)

MOV P2,#cyfra7 ;Wypisanie na porcie P2 wartości zadeklarowanej pod etykietą cyfra 7

cyfra0 equ 0C0h ;Deklaracja stałej cyfra 0 o wartości 0C0H

cyfra1 equ 0F9h ;Deklaracja stałej cyfra 1 o wartości 0F9H

cyfra2 equ 0A4h ;Deklaracja stałej cyfra 2 o wartości 0A4H

cyfra3 equ 0B0h ;Deklaracja stałej cyfra 3 o wartości 0B0H

cyfra4 equ 099h ;Deklaracja stałej cyfra 4 o wartości 099H

cyfra5 equ 0921h ;Deklaracja stałej cyfra 5 o wartości 0921H

cyfra6 equ 082h ;Deklaracja stałej cyfra 6 o wartości 082H

cyfra7 equ 0F8h ;Deklaracja stałej cyfra 7 o wartości 0F8H

end ;Zakończenie programu

Program przerwania:

ORG 0 ;Zarezerwowanie X komórki pamięci

SJMP POCZ ;

ORG 0Bh ;Rezerwuje pamięć do komórki 0BH

PUSH ACC ;Odłożenie na stos 8 bitowego akumulatora

PUSH PSW ;Odłożenie na stos rejestru słowa ośmiobitowego

DJNZ R0,WPISZ ;Porównanie - zminejsz wartość o jeden pierwszego argumentu i skocz jeśli w

rejestrze R0 jest wartość różna od zera kodu programu pod etykietą WPISZ

MOV TH0,#0FFh ;Wczytanie do bardziej znaczącej części licznika T0 liczby 0FFH

MOV ACC,P2 ;Wstawienie do akumulatora wartości z portu P2

MOV TL0,ACC ;Wstawienie wartości akumulatora do mniej znaczącej części licznika T0

SETB P3.1 ;Ustawienie bitu pierwszego na porcie P3 poprzez wstawienie 1.

MOV R0,#TIME ;Wpisanie do rejestru R0 wewnętrznej pamięci RAM mikrokontrolera

SJMP DALEJ ;Skok do kodu z pod etykiety Dalej

WPISZ: MOV TH0,#0FFh ;Wczytanie do bardziej znaczącej części licznika T0 liczby 0FFH

MOV ACC,P1 ;Załadowanie do rejestru A wartości z portu P1

MOV TL0,ACC ;Załadowanie do mniej znaczących 4 bitów licznika T0 rejestru A

CLR P3.1 ;Zerowanie bitu pierwszego, portu P3

DALEJ: POP PSW ;Zdjęcie ze stosu wartości rejestru PSW

POP ACC ;Zdjęcie ze stosu wartości rejestru akumulatora

RETI ;Powrót z podprogramu obsługi przerwania, rozkaz ten ponadto powoduje

przepisanie dwóch bajtów ze szczytu stosu do rejestru rozkazów PC.

POCZ: MOV TMOD,#1h ;Wpisanie wartości 1H do rejestru TMOD

MOV TH0,#0ffh ;Wczytanie do bardziej znaczących 8 bitów licznika T0 liczby 0FFH

MOV TL0,#WART_A ;Wczytanie do mniej znaczących 8 bitów licznika T0 liczby pod etykietą

WART_A

SETB TR0 ;Ustawienie znacznika TR0 w celu odblokowania licznika T0

MOV R0,#TIME ;Wpisanie do rejestru R0 (wykorzystywanym przy adresowaniu pośrednim)

wartości 02H

SETB EA ;Wstawienie do EA bitu o wartości 1

SETB ET0 ;Wstawienie do ET0 bitu o wartości 1

SJMP $ ;Skok do końca programu

WART_A EQU 256-20 ;Przypisanie wartości 256-20 symbolowi WART_A, w programie odwołanie

do wartości tegoż symbolu zostanie wykonane poprzez podanie jego nazwy.

WART_L EQU 256-30 ;Przypisanie wartości 256-30 symbolowi WART_L

TIME EQU 02H ;Przypisanie wartości 02H symbolowi TIME

END ;Zakończenie pogramu

NAME cwicz2

CSEG AT 0 ;określa od której komórki pamięci zaczyna się kod programu

MOV A, #WAR1 ;Wpisanie do akumulatora liczby z pod etykiety WAR1

ADD A, #WAR2 ;Dodanie dwóch wartości z tym że wynik zostaje przypisany do pierwszej (do

rejestru A)

MOV A, #ABCD1 ;Wpisanie do rejestru A liczby 22H

ADD A, #ABCD2 ;Dodanie do wartości 22H liczby z pod etykiety ABCD2 i umieszczenie wyniku

w akumulatorze

DA A ;Korekcja dziesiętna liczb zapisanych w BCD

SETB C ;Ustawia znacznik przeniesienia (wartością 1)

MOV A, #DANA ;Wpisanie do akumulatora wartości z pod etykiety DANA

RLC A ;Przesunięcie w lewo wartości akumulatora

RRC A ;Przesunięcie w prawo wartości akumulatora

MOV A, #ABCD1 ;Wpisanie do rejestru A wartości z pod etykiety ABCD1

ADD A, #ABCD2 ;Ponowne dodanie liczby 88H do 22H i umieszczenie wyniku w pierwszym

operandzie

DA A ;Korekcja dziesiętna liczb zapisanych w ABCD

MOV B, #WAR1 ;Kopiowanie liczby etykietowanej WAR1 do rejestru B

MOV A, #WAR2 ;Kopiowanie liczby etykietowanej WAR2 do rejestru akumulatora

MUL AB ;Wymnożenie dwóch stałych A*B-> BA czyli po wymnożeniu liczb zapisane

wynik mniej znaczących bitów zapisywany jest w rejestrze A, za to bardziej

znaczących bitów w B, znacznik przeniesienia C i parzystości P wynoszą 0.

POWT:

CLR A ;Ustawienie bitu ACC na wartość 0

MOVC A,@A+DPTR ;Wstaw do rejestru A wartość 8-bitowego rejestru A i wskaźnikowego

rejestru danych

JNB P,BEZPAR ;Jeśli bit znacznika P wynosi 0 to skocz do programu pod etykietą BEZPAR

ORL A,#80H ;Suma logiczna wartości 80H i wartości ACC, wynik umieszczany jest w

pierwszym operandzie czyli w akumulatorze.

BEZPAR:

INC DPTR ;Zwiększ wskaźnikowy rejestr danych o 1

MOV @R1,A ;Wstaw wartość akumulatora do wartości rejestru R1

INC R1 ;Zwiększ rejestr R1 o 1

DJNZ R0, POWT ;Jeśli wartość rejestru R0 jest różna od 0 to skok do kodu o etykiecie POWT

SJMP $ ;Skok do końca programu

TXT: DB 'PPROGRAM TESTOWY' ;Deklaracja zmiennej

KASA EQU 16 ;Przypisanie wartości 16 symbolowi KASA

WAR1 EQU 68 ;Przypisanie wartości 68 symbolowi WAR1

WAR1 EQU 199 ;Przypisanie wartości 199 symbolowi WAR2

ABCD1 EQU 22H ;Przypisanie wartości 22H symbolowi ABCD1

ABCD2 EQU 88H ;Przypisanie wartości 88H symbolowi ABCD2

DANA EQU 0A5H ;Przypisanie wartości 0A5H symbolowi DANA

END ;Zakończenie programu



Wyszukiwarka

Podobne podstrony:
I9M1S1 Nawrot Gudanowicz lab2
IWP JP2 Lab2 Struktury
Lab2 OZE id 259328 Nieznany
lrm sprawozdanie kck lab2
LAB 4 Lab2 WprowadzenieMATLAB 2 Nieznany
lab2(v2), Semestr III, Technologie wytwarzania
termo lab2 szczotka
Grudziński Krawiec lab2# 10 2012
Badanie wyplywu cieczy ze zbior sprawozdanie z lab2 id 631079 (2)
lab2 3 3
MES lab2
program lab2 1JP3
lab2 7 id 259265 Nieznany
Instrukcja IEF Algorytmy i struktury danych lab2
lab2 (2)
lab2 pd
lab2
PO lab2, Poptymalizacja
bd lab2 id 81995 Nieznany (2)

więcej podobnych podstron