Red de conocimiento informático - Material del sitio web - 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! ! !

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