还在测试稳定性和功能中

实验一

管理员2026年6月1日2 分钟39 次阅读
COM_ADD  EQU  0F003H
PA_ADD   EQU  0F000H
PB_ADD   EQU  0F001H
PC_ADD   EQU  0F002H

_STACK   SEGMENT STACK
         DW   100 DUP(?)
_STACK   ENDS

_DATA    SEGMENT
LED_Data DB   01111110B  ;东西绿灯,南北红灯
         DB   01111111B  ;东西绿灯闪烁,南北红灯
         DB   01111101B  ;东西黄灯亮,南北红灯
         DB   11011011B  ;东西红灯,南北绿灯
         DB   11111011B  ;东西红灯,南北绿灯闪烁
         DB   10111011B  ;东西红灯,南北黄灯亮
_DATA    ENDS

CODE     SEGMENT
START    PROC NEAR
         ASSUME CS:CODE, DS:_DATA, SS:_STACK
         MOV  AX, _DATA
         MOV  DS, AX
         NOP
         MOV  DX, COM_ADD
         MOV  AL, 80H       ;PA、PB、PC为基本输出模式
         OUT  DX, AL
         MOV  DX, PA_ADD    ;灯全熄灭
         MOV  AL, 0FFH
         OUT  DX, AL

START1:
         LEA  BX, LED_Data
         MOV  AL, 0
         XLAT
         OUT  DX, AL        ;东西绿灯,南北红灯
         CALL DL5S

START2:
         MOV  CX, 6
START2_LOOP:
         MOV  AL, 1
         XLAT
         OUT  DX, AL        ;东西绿灯闪烁,南北红灯
         CALL DL500ms
         MOV  AL, 0
         XLAT
         OUT  DX, AL
         CALL DL500ms
         LOOP START2_LOOP

         MOV  AL, 2         ;东西黄灯亮,南北红灯
         XLAT
         OUT  DX, AL
         CALL DL3S

         MOV  AL, 3         ;东西红灯,南北绿灯
         XLAT
         OUT  DX, AL
         CALL DL5S

START3:
         MOV  CX, 6
START3_LOOP:
         MOV  AL, 4         ;东西红灯,南北绿灯闪烁
         XLAT
         OUT  DX, AL
         CALL DL500ms
         MOV  AL, 3
         XLAT
         OUT  DX, AL
         CALL DL500ms
         LOOP START3_LOOP

         MOV  AL, 5         ;东西红灯,南北黄灯亮
         XLAT
         OUT  DX, AL
         CALL DL3S
         JMP  START1

DL500ms  PROC NEAR
         PUSH CX
         MOV  CX, 50000
DL500ms1:
         NOP
         LOOP DL500ms1
         POP  CX
         RET
DL500ms  ENDP

DL3S     PROC NEAR
         PUSH CX
         MOV  CX, 6
DL3S1:
         CALL DL500ms
         LOOP DL3S1
         POP  CX
         RET
DL3S     ENDP

DL5S     PROC NEAR
         PUSH CX
         MOV  CX, 10
DL5S1:
         CALL DL500ms
         LOOP DL5S1
         POP  CX
         RET
DL5S     ENDP

START    ENDP
CODE     ENDS
         END  START