mim egazmin

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 egazminDaniel Kura
mim egazmin new id 302040 Nieznany
mim egazmin docx
mim egazmin new
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
Pytania na egazminie
notatki do egazminu
MIM (004)4 93
egazmin poprawkowy grupa b
Mleko egazmin, technologia żywienia- materiały, mleko
pytania na egazmin makro wykład, MAKROEKONOMIA
PPKB egazmin
pytania na egazmin (1)
pojecia na egazmin cz II
1278314786032 Egazmin3

więcej podobnych podstron