exp1_1.txt
上传用户:hongshyy
上传日期:2007-01-25
资源大小:348k
文件大小:2k
源码类别:

教育系统应用

开发平台:

DOS

  1. code segment
  2. assume cs:code
  3. start:
  4. cli
  5. mov cx,1
  6. mov bx,1
  7. mov di,1
  8. mov al,0b0h ;8255A端口A为方式1、输入,端口B为方式0、输出
  9. out 63h,al
  10. mov al,09h ;PC4允许中断
  11. out 63h,al
  12. mov ax,0
  13. mov ds,ax
  14. mov ax,offset irq1 ;中断1偏移地址
  15. add ax,2000h
  16. mov si,09h*4
  17. mov [si],ax
  18. mov ax,0
  19. mov [si+2],ax
  20. mov ax,offset irq7 ;中断7偏移地址
  21. add ax,2000h
  22. mov si,0fh*4
  23. mov [si],ax
  24. mov ax,0
  25. mov [si+2],ax
  26. in  al,21h
  27. and al,7dh ;打开中断1和中断7
  28. out 21h,al
  29. mov  dx,43h ;设定控制端口
  30. mov  al,10110100B ;写入控制字,设定8253工作在方式2,先低字节,后高字节,十进制计数
  31. out  dx,al
  32. mov  dx,42h    ;设计数器2
  33. mov  al,10011010b ;写计数初值低字节
  34. out  dx,al
  35. mov  al,00101110b ;写计数初值高字节
  36. out  dx,al
  37. mov al,11111111b ;控制灯初始化为都不亮
  38. out 61h,al 
  39. mov al,20h
  40. out 20h,al
  41. a1: sti
  42. hlt
  43. jmp a1
  44. irq7:
  45. cmp bx,100
  46. jne contiue
  47. mov bx,1
  48. cmp cx,45
  49. jne count
  50. mov cx,1    ;循环记数
  51. count:
  52. cmp cx,15
  53. jbe  green
  54. cmp cx,16
  55. je  nolight
  56. cmp cx,17
  57. je  green
  58. cmp cx,18
  59. je  nolight
  60. cmp cx,19
  61. je  green
  62. cmp cx,20
  63. je  nolight
  64. cmp cx,21
  65. cmp cx,40
  66. jbe red
  67. cmp cx,42
  68. je  red
  69. cmp cx,44
  70. je  red
  71. nolight:
  72. mov al,11111111B ;控制灯不亮
  73. jmp control
  74. green: ;控制绿灯亮
  75. mov al,11110000B
  76. jmp control
  77. red: ;控制红灯亮
  78. mov al,00001111B
  79. jmp control
  80. control:
  81. inc cx ;计数器加1
  82. out 61h,al
  83. mov al,20h
  84. out 20h,al
  85. iret
  86. contiue:
  87. inc bx
  88. mov al,20h
  89. out 20h,al
  90. iret
  91. irq1:
  92. cmp di,0
  93. jne open
  94. mov al,11110111B ;测试用
  95. out 61h,al
  96. mov al,08h ;PC4禁止中断
  97. out 63h,al
  98. ; in  al,21h
  99. ; and al,0ffh
  100. ; out 21h,al
  101. ; mov al,20h
  102. ; out 20h,al
  103. mov di,1
  104. iret
  105. open:
  106. mov al,11110100B ;测试用
  107. out 61h,al
  108. mov al,09h ;PC4允许中断
  109. out 63h,al
  110. ; in  al,21h
  111. ; and al,7dh
  112. ; out 21h,al
  113. ; mov al,20h
  114. ; out 20h,al
  115. mov di,0
  116. iret
  117. code ends
  118. end start