Advertisement
heavenriver

ExEsame2009nov27.asm

Jun 17th, 2012
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Un DMAC è interfacciato al PD32. Il DMAC deve poter supportare operazioni di trasferimento dati bidirezionali tra due dischi collegati direttamente al DMAC. Il PD32 programma il DMAC utilizzando dati allocati in memoria a partire dall’indirizzo BASE_ADDR. I dati sono così composti nell’ordine:
  2. ;- 1 byte riservato alla modalità di trasferimento:
  3. ;   - 1 in caso di trasferimenti da disco A verso B
  4. ;   - 0 in caso di trasferimenti da disco B verso A
  5. ;- 2 byte per l'identificazione della traccia e del settore (si ipotizza che i dati da trasferire siano contenuti in un unico settore) del Disco A
  6. ;- 2 byte per l'identificazione della traccia e del settore (si ipotizza che i dati da trasferire siano contenuti in un unico settore) del Disco B
  7. ;- 1 byte per la tipologia delle parole trasferite:
  8. ;   - 0 trasferimento al byte
  9. ;   - 1 trasferimento alla word
  10. ;   - 2 trasferimento alla longword
  11. ;- 2 byte per il numero di parole trasferite:
  12. ;Nella routine d’inizializzazione il PD32 programma e avvia il DMAC. Il servizio associato all’interruzione del DMAC è il seguente: il PD32 scrive il numero di parole trasferite sull’interfaccia DISPLAY. DISPLAY è un’interfaccia di output sincrona collegata al PD32. Progettare:
  13. ;- Il SCA dell’interfaccia DMAC e DISPLAY;
  14. ;- Il software di attivazione per DMAC ed il driver del DMAC;
  15.  
  16. org 400h
  17. dmac equ 0h              ;DMAC, supports data transfer operations between two disks
  18. mode equ 1h              ;Transfer mode. 0 equals B to A, 1 equals A to B
  19. trackA equ 2h            ;Disk A track
  20. sectorA equ 3h           ;Disk A sector
  21. trackB equ 4h            ;Disk B track
  22. sectorB equ 5h           ;Disk B sector
  23. datatype equ 6h          ;Data type. 0 equals byte, 1 equals word, 2 equals longword
  24. wc equ 7h                ;Word counter
  25. display equ 8h           ;Output device
  26. baseaddr equ ?           ;Starting address for all data
  27. code
  28. jsr init
  29. seti
  30. main: jmp main           ;Loops until interrupt
  31. halt
  32. init: push R0            ;Initializes DMAC for transfer
  33. movl #baseaddr, R0
  34. outl (R0), mode          ;Sets transfer mode
  35. outl 1(R0), trackA       ;Sets disk tracks
  36. outl 3(R0), sectorA      ;Sets disk sectors
  37. outl 5(R0), trackB
  38. outl 7(R0), sectorB
  39. outl 9(R0), datatype     ;Sets data type for current transfer
  40. outl 10(R0), wc          ;Sets word counter
  41. pop R0
  42. ret
  43. driver 0, 700h           ;DMAC driver
  44. push R0
  45. movl #wc, R0
  46. outl display, R0         ;Transfers word number to display
  47. clear dmac
  48. pop R0
  49. rti
  50. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement