Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BVJ EQU FFFF1000
- UVJ EQU FFFF2000
- BS_1 EQU FFFF2004
- P_DATA EQU FFFF3000
- BS_2 EQU FFFF3004
- OBR EQU FFFF3008
- P_STOP EQU FFFF300C
- ORG 0
- MOVE 10000, R7 ;inicijalizacija stoga
- JP GLAVNI
- ORG 8
- DW 200
- GLAVNI MOVE %B 10000, SR ;omogucuje prihvat prekida
- MOVE 1, R0
- STORE R0, (P_STOP) ;treba rucno postavit da jedinica moze bacit prekid
- PETLJA LOAD R0,(ZAUSTAVI) ;provjeravamo oce li program nastaviti
- OR R0, R0, R0
- JR_Z END
- LOAD R0,(BS_1)
- OR R0, R0, R0 ;provjeravamo spremnost uvjetne vj
- JR_Z PETLJA
- LOAD R0, (BROJ)
- STORE R0, (UVJ) ;posluzujemo uvjetnu vj
- STORE R0, (BS_1) ;nakon posluzivanja brisemo bistabil stanja
- LOAD R0, (BROJAC)
- ADD R0, 1, R0 ;povecam brojac nakon upisa
- STORE R0, (BROJAC)
- JR PETLJA
- END MOVE %B 00000, SR
- HALT
- BROJ DW 0
- BROJAC DW 0
- MASKA DW 80000000
- ZAUSTAVI DW 1
- ORG 200
- PUSH R0
- PUSH R1
- MOVE SR, R1 ;spremam registar sr
- PUSH R1
- PUSH R2 ;koristim ga za masku
- STORE R0, (BS_2) ;javljamo da je prekid prihvacen
- LOAD R1, (BROJAC)
- STORE R1, (P_DATA) ;posluzivanje prekidne vj
- LOAD R2, (MASKA) ;ucitam masku
- LOAD R0, (BVJ) ;ucitam broj sa bezuvjetne vj
- AND R0, R2, R2 ;provjeravam je li broj sa bvj negativan
- JR_NZ KRAJ
- PUSH R0 ;parametar na stog
- CALL OBRADI
- ADD SP, 4, SP ;brisem parametar
- STORE R0,(BROJ) ;spremam broj u memoriju
- JR DALJE
- KRAJ MOVE 0, R0
- STORE R0, (P_STOP) ;onemogucujemo da prekidna vise baca prekide
- STORE R0, (ZAUSTAVI) ;s ovim ce se zaustaviti i glavni program
- DALJE STORE R0, (OBR) ;javljamo da je prekid obraden
- POP R2 ;obnova konteksta
- POP R1
- MOVE R1, SR
- POP R1
- POP R0
- RETI
- ;potprogram obradi
- OBRADI PUSH R1 ;spremanje konteksta
- MOVE SR, R1
- PUSH R1
- LOAD R1, (SP + 0C)
- MOVE 1, R0
- SHL R0, R1, R0 ;rez mora biti u R0
- POP R1 ;obnova konteksta
- MOVE R1, SR
- POP R1
- RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement