Por favor, ayúdenme con los comentarios y el diagrama de flujo de los códigos "visualización de luz indicadora de control de interruptor" y "visualización de luz de agua corriente" escritos en lenguaje ensamblador. ¡Gracias! ¡urgente! ! !
Pantalla de luz indicadora de control de interruptor
MY8255_A EQU 0A860H; dirección de puerto 8255A
MY8255_B EQU 0A861H dirección de puerto 8255B
MY8255_C EQU 0A862H; ; dirección del puerto 8255C
MY8255_MODE EQU 0A863H; dirección del puerto de control 8255
SEGMENTO DE CÓDIGO
ASUME CS: CÓDIGO
INICIO: MOV DX , MY8255_MODE
MOV AL, 82H
OUT DX, AL; escriba la palabra de control 82H en el puerto de control 8255, puerto A modo 0 salida, puerto B modo 0 entrada, puerto C no usado.
A1: MOV DX, MY8255_B
IN AL, DX; lee el contenido del puerto 8255 B
MOV DX, MY8255_A
OUT DX, AL; envía el contenido leído previamente del puerto B al puerto A, es decir, el contenido del puerto A = el contenido del puerto B
CALL BREAK; > JMP A1 ;Saltar a A1
BREAK PROC NEAR;BREAK subrutina
MOV AH, 1
INT 16H
JZ RETURN ; Leer caracteres clave, ZF=1, luego regresar; ZF=0, luego AL=carácter
MOV AX, 4C00H
INT 21H ;Volver a DOS
RETORNO: RET
p>
BREAK ENDP
CÓDIGO FINALIZA
FIN INICIO
;Pantalla de luz que fluye
MY8255_A EQU 0b860H; dirección del puerto 8255A
MY8255_B EQU 0b861H; dirección del puerto 8255B
MY8255_C EQU 0b862H; dirección del puerto de control
SEGMENTO DE DATOS
LA DB ?; reservar 1 byte
LB DB ?; reservar 1 byte
DATOS FINALIZA
SEGMENTO DE CÓDIGO
ASUME CS: CÓDIGO, DS: DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV DX, MY8255_MODE
MOV AL, 80H
OUT DX, AL; la palabra de control 80H se envía al puerto de control 8255. Ambas son salidas de modo 0 y el puerto C no se utiliza.
MOV DX, MY8255_A
MOV AL, 7FH
SALIDA DX, AL; envía 7FH al puerto A
MOV LA, AL ; Enviar 7FH a la unidad de almacenamiento LA
MOV DX, MY8255_B
MOV AL, 0FEH
OUT DX, AL ; Enviar FEH al puerto B
MOV LB, AL; envía FEH a la unidad de almacenamiento de LB
LLAME A DALLY
A1: MOV AL, LA
ROR AL, 1; el contenido se gira hacia la derecha una vez
MOV LA, AL
MOV DX, MY8255_A
OUT DX, AL después de que el ciclo se desplaza hacia la derecha; El contenido se envía al puerto A y su propósito es hacer que las luces LED conectadas al puerto A se iluminen hacia la derecha en secuencia
MOV AL, LB
ROL AL, 1 ; el contenido de LB se desplaza hacia la izquierda 1 vez
MOV LB, AL
MOV DX, MY8255_B
OUT DX, AL envía el contenido de LB después; el desplazamiento hacia la izquierda del ciclo al puerto B. El propósito es dejar que las luces LED conectadas al puerto B se enciendan en secuencia hacia la izquierda.
LLAME DALLY, deje que una luz LED brille de manera estable antes de encenderse; el otro
CALL BREAK; llama a la subrutina BREAK para ver si se presiona una tecla
JMP A1
DALLY: MOV CX, 3FFH; Subrutina de retardo
D1: MOV AX, 0FFFFH
D2: DEC AX
JNZ D2
LOOP D1
RET
BREAK PROC NEAR ; Si se presiona una tecla
MOV AH, 06H
MOV DL, 0FFH
INT 21H
JE RETURN ; Si no, entonces transfiera a RETURN
MOV AX, 4C00H
INT 21H volver a DOS
RETURN: RET;
BREAK ENDP
CÓDIGO FINALIZA
FIN INICIO