[ Foton @ 07.04.2007. 18:39 ] @
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...! |