Función de programación VGA
1. Propósito del experimento:
(1) Aprender ramas, interrupciones y expresiones lógicas.
(2) Familiarizado con la programación en lenguaje ensamblador, procesos de compilación y vinculación.
Contenido experimental:
Utilice DOS 21H para llamar a la función de interrupción del teclado tipo 10, ¿la cadena del valor del año del teclado? Los bytes recibidos se almacenan en el búfer. Cada carácter de la cadena se convierte al valor decimal correspondiente (el valor del código ASC del número de 10 dígitos del 0 al 9 es mayor que su propia relación 30H) y se utiliza una expresión de año para determinar si es un año bisiesto. .
3. Habilidades de programación:
(1) Encuentre una manera de determinar si es un año bisiesto. Reglas para juzgar los años bisiestos: si un año es divisible por 4, pero no divisible por 100, o no divisible por 400, es un año bisiesto.
(2) La expresión en lenguaje ensamblador utilizada para determinar si un año específico es bisiesto es la siguiente:
(((AX)MOD 4 EQ 0) y (MOD 100 (AX)EQ 0) )) o ((AX)MOD 400 EQ 0)
(AX)Ingrese el valor del año almacenado desde el teclado.
(3) Como se muestra en la figura:
Debe
compilar:
Segmento de datos definido por segmento de datos
InfoN DB 0DH, 0AH de, ingrese el año: $ '
DB 0DH, 0AH, "¡Este año es bisiesto! $'
N dB ancho de banda 0DH , 0AH, "¡Es un año bisiesto! $'
Watios DW 0
BUF DB 8
¿Decibeles?
DB 8 DUP(?)
Ed (nombre masculino)
Pila de segmento de pila
DB 200 DUP(0)
Fin de la pila
Segmento de código
Supongamos DS: datos, SS: pila, CS: código.
Inicio: MOV AX, DATA
MOV DS, AX
InfoN LEA DX, se muestra la información en pantalla.
MOV AH, 9 INT 21H
LEA DX, buffer de entrada desde teclado este año
MOV AH
Int21H10Day BR/ >MOV CL, [BUF +1]
LEA DI, BUF +2
Llamar datacate
Llamar ifyears
JC A1
LEA DX, positivo
MOV, 9
Explicación de 21H
Exportación JMP
A1:LEA DX ,?
MOV AH, 9
INT 21H
Exportar: MOV AH, 4CH
INT 21H
Datos Cerca del proceso de transformación;
Push CX;
Diciembre CX
LEA SI, BUF +2
TT1: Empresa SI< / p>
Ciclo TT1
; Lacey CX[2]
Emergente CX
MOV DH, 30H
MOV AX , MOV BL, 1
L1: Push Ax
Subbyte PTR [SI, DH
Puntero multibyte [SI]
p>Will Wax
Barril Explosivo
MUL BL
Diciembre SI
Loop L1
Remojarlo en agua lo hace soft
ENDP Data Center
Casi 10 años
Promoviendo BX
Promoviendo CX
Push DX p>
Vatios·MOV·AX
MOV·CX,AX</Trigger MOV·DX,0
MOV·BX,4 Años
División BX
CMP DX, 0
JNZ LAB1
CX MOV Aix
MOV BX, 100 BR />División BX p>
CMP DX, 0
JNZ Lab 2
CX MOV X
MOV·BX, 400
División BX
CMP DX, 0 BR />JZ Laboratory 2
LAB1: Número de clasificación de la biblioteca china
p>Experimento JMP 3
Experimento 2: STC
Experimento 3: Pop-up DX
Pop-up CX
Pop-up BX
Remojado para suavizar
ifyers ENDP
Contraseña
Empezar desde el final
O diseño de reloj multipropósito en tiempo real.
(1), cuyo objetivo de diseño es un verdadero reloj del fin.
Generación de señal de reloj del temporizador de reloj de la parte de visualización y parte de sincronización
(2) La hora exacta de la interrupción, en segundo lugar,
(3; ) Control del teclado Selección de funciones:/>Escaneo de filas y columnas para determinar la entrada del teclado
Pantalla LED del teclado de autoprueba;
Diferentes entradas de teclas corresponden a diferentes funciones (como rotación del LED o LED parpadeando).
2. Requisitos de diseño
(1) Integración del teclado y la parte de control de selección de chip del 8255.
(2) Pantalla de tubo digital LED, su circuito periférico; La parte de tiempo;
(3 copias) constituye la señal de reloj generada por 8253 y 8259, que se completa con una interrupción temporizada y una visualización de actualización dinámica.