Advertisement
heavenriver

ExEsame8.asm

Jun 13th, 2012
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Un processore è interfacciato a due periferiche di input che indicano il numero di autovetture passate nelle due direzioni di un incrocio a X, al relativo semaforo e ad un TIMER. Normalmente il processore ogni minuto comanda il semaforo ad invertire l’abilitazione ai passaggi (da rosso a verde e viceversa). Prima di abilitare la commutazione del semaforo, il processore legge il numero di autovetture passate nella direzione con il verde, se il numero di auto passate in questa direzione è maggiore di 32 unità rispetto a quello dell’altra direzione (conteggiato nell’ultimo periodo), allora il processore ritarda la commutazione del semaforo di un altro minuto. L'evento del ritardo può verificarsi una volta soltanto.
  2. ;Ogni volta che il processore legge i valori del numero di autovetture passate avverte il SCO delle periferiche di input di riazzerare il relativo contatore.
  3. ;Progettare l’interfaccia del TIMER, una delle interfacce di input e l’interfaccia della periferica che gestisce il semaforo. Inoltre progettare il software per la gestione delle interruzioni provenienti dal TIMER.
  4.  
  5. org 400h
  6. carleft equ 0h
  7. carright equ 1h
  8. tlights equ 2h
  9. timer equ 3h
  10. flag equ 1000h
  11. lastcount dl 1100h
  12. commute db 0
  13. code
  14. main: jmp main
  15. halt
  16. driver 3, 700h
  17. push R0
  18. push R1
  19. push R2
  20. push R3
  21. push R4
  22. movl flag, R0
  23. movl lastcount, R1
  24. cmpb #1, R0
  25. jz green
  26. inl carleft, R2
  27. outl #0, carleft
  28. jmp proceed
  29. green: inl carright, R2
  30. outl #0, carright
  31. proceed: movl lastcount, R3
  32. subl #32, R3
  33. cmpl R3, R2
  34. jn switch
  35. movb commute, R4
  36. subb #0, R4
  37. jnz switch
  38. movb #1, commute
  39. jmp recover
  40. switch: movb #0, commute
  41. movb flag, R4
  42. cmpb #0, R4
  43. jz setgreen
  44. movb #0, flag
  45. movl #0, carright
  46. movl carleft, lastcount
  47. jmp recover
  48. setgreen: movb #1, flag
  49. movl #0, carleft
  50. movl carright, lastcount
  51. recover: pop R4
  52. pop R3
  53. pop R2
  54. pop R1
  55. pop R0
  56. rti
  57. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement