mim egazmin docx

pytania z egzaminu z tamtego roku:

1. Zbiór typu .hex jest wynikiem pracy assemblera. Jest to standardowy format zapisywany

w kodzie ASCII wierszami o następujących polach: kod startu ':' liczba bajtów danych

(dwa znaki), adres pamięci kodu, od którego wpisywane będą dane tego wiersza (4 znaki),

typ pola danych (dwa znaki, 00 - oznacza treść programu, 01 - oznacza wiersz końca), 2n

znaków dla n bajtów danych, najmniej znaczący bajt sumy kontrolnej utworzonej ze

wszystkich bajtów bez pola ':' i bez siebie samej.

Ten bajt sumy przed zapisem ma zmieniony znak wg "uzupełnienia dwójkowego" (czyli

wynik powstaje z odjęcia od 0x100 albo przez XOR x 0xFF i dodaniu 0x01). Przykład

wiersza programu do ładowania od adresu 00A0, oraz wiersza sygnalizującego koniec

zbioru:

:1000A000C0E0C0D0D2D3C2D4C2AAC218753AFFC22F

:00000001FF

Sprawdź, czy następujący wiersz jest poprawny:

:10022000D2A8D2A9D2ABD2ACE4F52FF52AF5477506

2. Napisz obsługę przerwania timera T0, zliczającego cykle maszynowe w trybie 16-bitowym.

Załóż, że T0 jest uruchomione. W przerwaniu zwiększana jest wartość zmiennej ILE aż

osiągnie ona wartość 0xDE. Wtedy T0 ma zostać zatrzymane.

3. Podaj cechy architektury ARM, które zasadniczo różnią ją od „rodziny 8051” i AVR.

4. Napisz w assemblerze program, który ustawia zmienną PARITY na 1, gdy liczba jedynek w

trzech bajtach 24-bitowej zmiennej umieszczonej w adresach BAJT, BAJT+1, BAJT+2 jest

nieparzysta, a ustawia - w przypadku przeciwnym.

5. Wymień najważniejsze różnice architektur RISC i CISC.



1. TAK


2. potrzebna tylko procedura Timer0

CSEG AT 0H

AJMP start


CSEG AT 0BH

AJMP Timer0


ILE DATA 20h


start:

SETB EA

SETB ET0

MOV TMOD,#00000001B ;T1: tryb 1=16b T1: tryb 1=16b

SETB TR0

AJMP $

;****************************************************

Timer0:

INC R0

MOV ILE,R0

CJNE R0,#0DEh,tam

CLR TR0

tam:

RETI

;***************************************************

END


3.patrz wykłady


4.napisane w asemblerze MCS-51 [ 1- nieparzyste, 0-parzyste]

CSEG AT 0H

AJMP start


ZMIENNA DATA 30h

PARITY BIT 0h


start:

MOV 30h,#00010001B

MOV 31h,#01000000B

MOV 32h,#00000000B

CLR PARITY

MOV R0,#ZMIENNA

MOV R1,#3

hop:

MOV A,@R0

JNB PSW.0,tam

CPL PARITY

tam:

INC R0

DJNZ R1,hop

MOV P2,20h

END


5.patrz wykład



1) z tablicy pod adresem 0x50 o długości 0x40 wybierz bajty z parzysta liczba jedynek i utworzyc z nich nową tablice

2) DAC 10-bitowy o Uref =2.048V jaka będzie odpowiedź analogowa gdy rejestr danych przechowują wartosci: DACDATAH = 0

DACDATAL = 0xF3

3) napisz podprogram dla uzyskania opóźnienia 1ms. Procesor ma cykl maszynowy równy 0.5us

4) bufor danych znajduje się w pamięci pod adresem umieszczonym w R0 o długości umieszczoniej w R1 utwórz 16 bitową sume kontrolną w parze R2,R3



Zaczynając od końca, to ja zdanie 8. zrobiłem tak, że zawartość akumulatora przerzuciłem do pomocniczego rejestru, do A załadowałem binarnie jedynkę i dekrementując rejestr pomocniczy, przesuwalem rozkazem RL (bitowo w lewo) tę jedynkę. Oczywiście na początku warunek, że jeśli w A jest zero, to koniec programu. Można oczywiście na sztywno też zrobić, sprawdzając po jednym bicie a Akumulatora, instrukcja warunkowa, 8 linii, ale trochę nieelegancko.


7. to chyba łatwo opisać linię, ale co to robi, to nie wiem, jaka to funkcja.


5. to trzeba jakoś w pomocniczym rejestrze zliczać ile razy flaga tam jakaś od przepełnienia, ew dzielić, jak reszta 0, to coś tam robić


4. mam bardzo podobnie zrobione, tylko, że dane są podawane w innej formie:


Kod: Zaznacz wszystko

PROG SEGMENT CODE


Ile EQU 8

BUFOR DATA 50h

TABLICA DATA 70h


CSEG AT 0

JMP start


RSEG PROG


start:

MOV R0, #TABLICA

MOV A, #0

MOV DPTR, #BUFOR

MOV R1, #Ile


loop:

MOV A, #0

MOVC A, @A+DPTR

INC DPTR

JNB PSW.0, event

powrot:

DJNZ R1, loop

AJMP $


event:

MOV @R0, A

INC R0

AJMP powrot


CSEG AT BUFOR

Buf:

DB 1,2,3,4,5,6,7,8


END




2. to trzeba policzyć, te cykle, chyba też łatwe


Trochę tak opisowo, ale mam nadzieję, że pomoże komuś choć trochę, kto nie ma pomysłu.

Reszty na examie nie przeczytałem nawet.


w 2 wystarczy zrobić pare pętli które przejdą przez razem 2 mln cykli, w 4 wystarczy przepisywać kolejne segmenty pamięci do akumulatora i robić skok do podprogramu gdzie się zlicza ilość nieparzystych, w 5 trzeba w innym rejestrze liczyć przerwania jak będzie 7 to zrobić co każą, w 6 tak jak w 4 trzeba przepisać rejestr SBUF do akumulatora i sprawdzić w rejestrze PSW czy jest niepażysta jedynek jeśli tak to skoczyć do podprogramu gdzie się sprawdzi bit TB8 i zrobić co każą, w 7 chyba prosto : P, w 8 wystarczy przepisać gdzieś akumulator a wpisać do niego "1" i przesówać w pętli DJNZ w lewo odejmując zapamiętaną wcześniej liczbę,


Zad.1 rozkminka do oceny

1111 1111 to dziesiętnie 255, odpowiada wartości Uref=2.55V

czyli jeden krok 0000 0001 odpowiada 0.01V


start

V=0V ADC=0000 0000


po 1. minucie

V=1V, 1V/0.01V=100 stad ADC=100dec=0110 0100bin=64hex


po 2. minucie

V=2V, 2V/0.01V=200 stad ADC=200dec=1100 1000bin=C8hex


po 3. minucie

V=3C, 3V/0.01V=300 stad ADC=no wlasnie ile? powyzej 2.55 juz zawsze FF?


Zad.2

PROG SEGMENT CODE


CSEG AT 0

JMP start ;2cykle ktore nie licza sie do opoznienia


RSEG PROG


Delay_1s:

MOV R7, #16 ;1c

zewn:

MOV R6, #255 ;1c

wewn:

NOP ;1c

MOV R5, #243 ;1c

DJNZ R5, $ ;2c kazda

DJNZ R6,wewn ;2c kazda

DJNZ R7,zewn ;2c kazda

;i jeszcze dopelnic do rownych 2 mln

MOV R6, #255 ;1c

DJNZ R6, $ ;2c kazda

MOV R6, #117 ;1c

DJNZ R6, $ ;2c kazda

NOP ;1c

RET ;2c


start: ;jakis tam program

;instrukcja A

ACALL Delay_1s ;2c

;instrukcja B

end


W keilu sie to szybko robi. 1000000000 [ns] dziele na 1 cykl (tu 500ns) i mnoze *12 (tyle taktow to 1 cykl) wychodzi 2400000 Hz czyli 24 MHz i to wpisuje w keilu i pokazuje tak jak ma byc.



8) dobrze rozkminione. Tu troche inaczej:

CSEG AT 0

JMP start


start:

MOV A,#7d


nasz_program:

MOV R0,A

INC R0

MOV A,#10000000b

loop:

RL A

DJNZ R0,loop

END


7) funkcja robi odwrotność zadania 8, (wypisze na którym miejscu była pierwsza 1 w akumlatorze)

np. A=0110 1000 to "wypisze" 4





Wyszukiwarka

Podobne podstrony:
mim egazmin new id 302040 Nieznany
mim egazmin
mim egazminDaniel Kura
mim egazmin new id 302040 Nieznany
mim egazmin new
Odpowiedzi na egzamin z mim docx
egazmin anatomia
Filozofia zdrowia docx
Etykawyk adnr1120 docx
Pytania na egazmin, studia Pedagogika Resocjalizacja lic, Działalność pożytku publicznego
mim, studia Polibuda Informatyka, III semestr, mikroprocesory i mikrokontrolery (mim)
Fizjologia egazmin 13
Janet?rguson The Midwife Bride [HMED 50, MMED 1032] (v0 9) (docx)
Poznajemy kolory czerwony docx
Pytania na egazminie
notatki do egazminu
Międzynarodowy Pakt Praw Obywatelskich i Politycznych docx
MIM (004)4 93
egazmin poprawkowy grupa b

więcej podobnych podstron