Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko programa

[es] :: Asembler :: Pomoc oko programa

[ Pregleda: 1881 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Foton

Član broj: 141474
Poruke: 1
*.onspeed.com.



Profil

icon Pomoc oko programa07.04.2007. u 18:39 - pre 207 meseci
Hitno mi treba pomoc oko razumevanja programa iz Asemblera za x86,Text zadatka je:

Na port FF00h vezan je 16-bitni registar vremenskog brojača (timer), na način da se upisom vrednosti u ovaj registar automatski startuje brojač. Kada dobroji do nule, brojač se zaustavlja i istovremeno generiše prekid procesoru. Oscilator vremenskog brojača ima frekvenciju 0.5kHz. Na port FF02h vezan je 16-bitni registar podataka D/A konvertora. Upisom vrednosti na ovaj port automatski se startuje konverzija. Na port FF04h vezan je 16-bitni prijemni registar kontrolera serijske veze. Kontroler serijske veze, po prijemu podatka u prijemni registar, generiše prekid procesoru. Podaci stižu neprekidno u nepravilnim vremenskim razmacima. Napisati glavni program i potrebne prekidne rutine, na simboličkom mašinskom jeziku procesora i8086, koje obavljaju sledeću operaciju: po prihvatanju 17 podataka sa kontrolera ser. veze potrebno je na D/A konvertor poslati njihov zbir. Ako je u roku od 2 sekunde (od poslednjeg poslatog podatka) pristiglo manje od 17 podataka tada na D/A konvertor treba poslati dvostruku vrednost njihovog zbira. Ako u navedenom vremenskom intervalu nije stigao ni jedan podatak, na D/A konvertor treba poslati 0. Potrebno je inicijalizovati interapt vektore (brojeve ulaza izaberite sami).

Program izgleda ovako:
prekidi SEGMENT
ASSUME CS:prekidi
int_tm: MOV DX, 0FF02H ;D/A.DR
MOV AX, BX
SHL AX, 1
OUT DX, AX
XOR BX, BX
XOR CX, CX
MOV DX, 0FF00H ;Tajmer.DR
MOV AX, 1000 ;2sek
OUT DX, AX
IRET
int_sr: MOV DX, 0FF04H ;Ser.DR
IN AX, DX
ADD BX, AX
INC CX
CMP CX, 17
JNE kraj
MOV DX, 0FF02H ;D/A.DR
MOV AX, BX
OUT DX, AX
XOR BX, BX
XOR CX, CX
MOV DX, 0FF00H ;Tajmer.DR
MOV AX, 1000 ;2sek
OUT DX, AX
kraj: IRET
prekidi ENDS

program SEGMENT
ASSUME CS:program
ent_tm EQU 34H
ent_sr EQU 35H
poc: CLI
XOR AX, AX
MOV DS, AX
MOV CX, prekidi
MOV AX, OFFSET int_tm
MOV DX, OFFSET int_sr
MOV BX, ent_tm*4
MOV [BX], AX
MOV [BX+2], CX
MOV BX, ent_sr*4
MOV [BX], DX
MOV [BX+2], CX
XOR BX, BX ;suma
XOR CX, CX ;brojac
MOV DX, 0FF00H ;Tajmer.DR
MOV AX, 1000 ;2sek
OUT DX, AX
STI
petlja: JMP petlja
program ENDS
END poc


Ako moze pomoc "korak po korak" sta znaci koja naredba,ukratko,ne mora detaljno jer poznajem donekle sintaksu asemblera.
Ljudi pomagajte...!
 
Odgovor na temu

[es] :: Asembler :: Pomoc oko programa

[ Pregleda: 1881 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.