Extras din laborator
Obtinerea cunostintelor si deprinderilor de-a lucra cu variabele.
Sarcina lucrarii:
Să se evalueze o expresie pentru a calcula rezultatul în dependență de o condiție.
Varianta:
Notiuni teoretice:
Declararea variabilei
O variabila se va declara in segmentul de date .DSEG si va reprezenta o eticheta urmata de o directiva de preprocesare .BYTE care permite rezervarea unei zone de memorie pentru variabila data.
.DSEG ; variabilele for fi declarate in
; segmentul de date
var1 : .BYTE 1 ; declaratia variabilei var1 si rezervarea
; a 1 byte pentru aceasta variabila.
Operatii de transfer cu variabilele
Operatiile de transfer pentru variabile va fi executat cu comenzi de acces direct la memorie cum ar fi:
• LDS R, k - incarcarea directa a valorii de la adresa k din SRAM intrun registru de uz general.
• STS k, R - stocarea directa valorii unui registru de uz general la adresa k din SRAM.
Eticheta - numele variabilei va reprezenta adresa primei locatii a variabilei. Locatiile superioare dupa principiul "little-endian" se vor accesa dupa adresele imediat urmatoare.
Transferul unei valori de la o variabila la alta
Asa cum pentru arhitectura AVR nu exista o comanda de transfer de date direct dintro locatie SRAM in alta, valoarea din locatia de la adresa reprezentata prin numele variabilei sursa se va incarca mai intai intr-un registru de usz general cu comanda LDS dupa care se va descarca direct intr locatia destinatie cu STS.
;Ex: a = b;
.DSEG ; variabilele for fi declarate in
; segmentul de date
a : .BYTE 1 ; rezervare 1 byte pentru variabila a
b : .BYTE 1 ; rezervare 1 byte pentru variabila b
.CSEG ; programul se scrie in segmentul de cod
lds r16, b ; incarcarea valorii variabilei
; b in registru de lucru
sts a, r16 ; descardcarea valorii registrului
; de lucru in variabila a
Pentru variabile de un volum mai mare de un byte vom avea cate o operatie de transfer pentru fiecare byte. adresele baitilor superiori se vor forma din adresa de baza, eticheta-nume, si constanta de deplasare care va indica numarl de ordine a byte-ului in variabila.
Operatii aritmetice cu variabile
Pentru a evalua o operatie artmetica intre doua variabile va trebui sa transferam mai intai valorile variabilelor in registri de uz general dupacare vom avea posibilitatea de a evalua o operatie aritmetica sau logica. Acest fapt se datoreaza restrictiilor arhitecturii care permite operatii aritmetice doar cu registri de uz general.
;Ex: a = b + c;
.DSEG ; variabilele for fi declarate in
; segmentul de date
a : .BYTE 1 ; rezervare a 1 byte pentru variabila a
b : .BYTE 1 ; rezervare a 1 byte pentru variabila b
c : .BYTE 1 ; rezervare a 2 byte pentru variabila c
.CSEG ; programul se scrie in segmentul de cod
lds r15, b ; incarcarea valorii variabilei b
; intr-un registru de lucru
lds r16, c ; incarcarea valorii variabilei c
; in alt registru de lucru
add r15, r16 ; evaluarea operatiei de adunare
sts a, r15 ; descarcarea rezultatului in variabila a
Mersul lucrării:
1)Alegem metoda de reprezentare a rezultatului.
2)Formulam schema bloc problemei.
3)Setam regisrtii DDRx si PORTx in dependent de necessitate.
3)Elaboram schema electrica in soft-ul PROTEUS.
4)Scriem codul in intregime.
5)Simulam functionarea schemei alese in PROTEUS.
Descrierea modului de functionare a schemei:
In primul rind introducem variabele cu care vom lucra, si dam dimensiunea lor in “byte”, apoi introducem valorile acestor variabile. Apoi formam o subrutina in care vom face prelucrarea expresiei date de professor si afisare rezultatului in dependenta de contie. In expresie o variabila in totdeauna se va modifica, adica ea depinde de altele variabile si noi vom vizualiza cum se modifica aceasta variabila.
Schema bloc de fuctionare .
Preview document
Conținut arhivă zip
- Variabilele si Evaluarea Expresiilor Aritmetico-Logice.docx