Informe del juego de mecanografía neuronal del programa de lenguaje ensamblador
El informe no se redactará.
Esta puntuación sólo es suficiente para el código fuente.
-
Esta plantilla es código de programa DOS puro y requiere MASM5.0. Utilice el modo "Compilar->DOS".
; -
Macro inicio_juego op1, op2, op3, op4, op5, op6
mov cx, 00h
mov dh, op1
mov dl, op2
op6:
mov ah, 02h
mov BH 00h
int 10h
Push cx
Ah, 0ah
película al, op3
mov BH 00h
mov cx , 01h
int 10h
cx popular
inc cx
empresa op4
cmp cx,op5
jne op6
endm
clear_screen macro op1, op2, op3, op4
Película, 06h
mov al, 00h
mov bh, 07h
mov ch, op1
mov cl, op2
mov dh, op3 p >
mov dl, op4
int 10h
mov ah, 02h
mov BH 00h
mov dh, 00h
mov dl, 00h
int 10h
endm
Menú macro op1, op2, op3
mov ah , 02h
mov BH 00h
mov dh, op1
mov dl, op2
int 10h
mov ah, 09h
lea dx, op3
int 21h
endm
segmento de datos
pro Jiang db"Hecho por Linjiang$"
No db "No.: 021411$ "
meg db"¡¡Juguemos un juego!! ¡¡Vamos!!$"
Meg 1 db " * *Seleccionar menú**$ "
meg2 db "Selecciona la velocidad del juego, ESC para salir.$"
meg3 db "1. Demasiado lento Demasiado fácil, ¡acelera! $"
meg4 db "2. Lento, todos pueden manejarlo $"
meg5 db "3. ¡Está bien, creo que puedes manejarlo!" <. /p>
meg6 db "4. Desafío rápido. ¡Atención! $"
meg7 db "5. Demasiado rápido y demasiado difícil, ¿pruébalo? $"
meg8 db "6.
Te volverás loco lo antes posible$"
meg9 db " *¡Selecciona un número del 1 al 6 y presiona ENTER para comenzar! *$"
meg10 db "Selección de velocidad del juego: $ "
Hotkey db "Cuando estás jugando: $ "
Hotkey 1 db "ESC para volver al menú$ "
Hotkey 2 db "Espacio para pausar el juego$"
Hotkey 3 db "Presiona cualquier tecla para jugar...$" p>
Hotkey 4 db "¿Estás listo$"
failmeg db "La carta ha llegado al final, ¡pierdes!" :($"
failmeg0 db "Presiona ENTER para continuar...$"
failmeg1 db"¡Se acabó el juego!$"
failmeg2 db "Presiona ENTER para regresar al menú y presione ESC para salir!$"
failmeg3 db "¡¡Adiós! ¡¡Gracias por su participación!!$"
failmeg4 db "Presione cualquier tecla para salir. . ....$"
Velocidad dw 00d, 1200d, 800d, 600d, 400d, 200d, 100d
Letra db " jwmilzoeucgpravskntxhdyqfb "
db "iytpkwnxlsvxrmofzhgaebudjq "
db "nwimzoexrphysfqtvdcgljukda "
letras _ bak db " jwmilzoeucpravsktxhdyqfb "
db "iytpkwnxlsvxrmofzhgaebudjq "
db "nwimzoexrphysfqt vdcgljukda "
db p>
letter_counter db 0
life_flag db 78 dup(0)
position_flag db 78 dup(0)
posición actual de la base de datos 1
Fin de los datos
Segmento de pila para pila 'stack'
db 64 dup(0)
Fin de la pila
Segmento de código
El proceso principal está lejos
Supongamos cs: code, ds: data, ss: stack
Inicio:
Mover eje, datos
mover ds, ax
mov letter_counter, 00h
mov present_position, 1
lea si, position_flag
mov ah, 00h
mov cx, 00h
Indicador de posición de inicialización:
mov [si ], ah
Empresa si
inc cx
cmp cx, 78d
indicador de posición de inicialización jne
Lidy, letra
lea si, letras_bak
mov cx, 00h
Letra inicial:
mov ah, [si] p>
mov [di], ah
Empresa si
Empresa di
inc cx
cmp cx, 78d
jne letra_inicialización
mov ah, 00h
lea si, bandera de vida
mov cx, 00h
bandera_vida_inicialización :
mov [si], ah
Empresa si
inc cx
cmp cx, 78d
jne inicialization_life_flag
mov cx, 00h
mov ah, 01h
o ch, 00010000b
int 10h
borrar pantalla 00d, 00d, 24d, 79d
Init_game 00d, 00d, 0ah, dl, 80d, nextsign1
Init_game 24d, 00d, 0ah, dl, 80d, nextsign2
Init_game 00d, 00d, 0ah, dh, 25d, nextsign3
Init_game 00d, 79d, 0ah, dh, 25d, nextsign4
Expansión macro del menú 01d, 15d, información del menú mega
Menú 01h, 61d, Linjiang
Menú 03d, 20d, meg1
Menú 03d, 68d, no
Menú 05d, 15d, meg2
Menú 07d, 15d, meg3
Menú 09d, 15d, meg4
Menú 11d, 15d, meg5
Menú 13d, 15d, meg6
Menú 15d, 15d, meg7
Menú 17d, 15d, meg8
Menú 19d, 15d, meg9
Menú 22d, 15d, meg10
Entrada: mov ah, 02h
mov BH 00h
mov dh, 22d
mov dl, 33d
int 10h
Ah, 0ah
mov al," "
mov BH 00h
mov cx, 01h
p>int 10h
mov ah, 01h
int 21h
Reintentar: cmp al, " 1 "
je speed1 p>
Aluminio pulido mecánicamente químico, "2"
je velocidad 2
cmp al, "3"
je velocidad 3
cmp al, " 4 "
je velocidad 4
cmp al, " 5 "
je velocidad 5
cmp al, "6"
je velocidad 6
cmp al, 1bh
je to_over0
entrada jmp
p>TO_END 0: JMP END
Velocidad 1: mov ah, 01h
int 21h
cmp al, 0dh
jne otras teclas
Mover eje, velocidad 2
Mover velocidad, eje
jmp start
Velocidad 2: mov ah , 01h
int 21h
cmp al, 0dh
jne otras teclas
Mover eje, velocidad 4
Velocidad de movimiento, hacha
jmp start
Velocidad 3: mov ah, 01h
int 21h
cmp al, 0dh p>
jne otras teclas
Mover eje, velocidad 6
Mover velocidad, eje
jmp start
Velocidad 4: movimiento ah, 01
h
int 21h
cmp al, 0dh
jne otras teclas
Velocidad de movimiento 8
Velocidad de movimiento , ax
jmp start
Velocidad 5: mov ah, 01h
int 21h
cmp al, 0dh
jne otras teclas
Velocidad 10
Velocidad de movimiento, hacha
inicio jmp
Velocidad 6: mov ah, 01h
p>int 21h
cmp al, 0dh
jne otras teclas
mov ax, velocidad 12 p>
Velocidad de movimiento, hacha
jmp inicia
otra tecla:; manejar fragmentos de código duplicados
empujar el hacha
mov ah, 02h
mov BH 00h
mov dh, 22d
mov dl, 34d
int 10h
Ah, 0ah
mov al, " "
mov BH 00h
mov cx, 01h
int 10h
mov ah, 02h
mov BH 00h
mov dh, 22d
mov dl, 33d
int 10h
Barril explosivo
mov dx, hacha
mov ah, 02h
int 21h
reintento jmp p>
Inicio:
clear_screen 01d, 01d, 23d, 78d
Menú 08d, 20d, tecla de acceso rápido
Menú 10d, 20d, tecla de acceso rápido 1
Menú 12d, 20d, tecla de acceso rápido 2
Menú 14d, 20d, tecla de acceso rápido 4
Menú 16d, 20d, tecla de acceso rápido 3
mov ah 07h
p>int 21h
clear_screen 01d, 01d, 23d, 78d
Init_game 23d, 01d, 01h, dl, 78d, nextsign5
mov ah, 02h inicialización del cursor
mov BH 00h
mov dh, 01h
mov dl, 01h
int 10h
mov cx, 00h
lea si, letter
Siguiente letra:; inicializa la letra en la parte superior de la pantalla.
mov ah, 02h
mov dl, [si]
int 21h
Compañía si
inc cx
cmp cx, 78d
je nextcycle
jmp siguiente letra
desde _ front: algoritmo de ciclo relacionado
p>Sub posición actual, 78d
jmp gobackto_si
find_zero: cmp contador de letras, 78d
je reciclaje
cmp Posición actual, 78d
Soy de la escuela secundaria número 1
mov ah, 00h
siguiente: Agregar posición_presente, 01h
Empresa si
p>cmp [si], ah
Quiero volver
ubicación actual de cmp, 78d
Soy de la escuela secundaria No. 1
jmp nextsi
from_one: mov present_position, 01h
jmp gobackto_si
Reciclaje: mov letter_counter, 00h
mov present_position, 01d
lea si, position_flag
mov cx, 00h
mov ah, 00h
clearsi: mov [si], ah
inc cx
cmp cx, 78d
je nextcycle
company si
jmp clearsi
Siguiente ciclo:
lea si, letter
lea si, position_flag
Agregar present_position, 31d
posición actual de cmp, 78
ja desde el frente
gobackto_si:
Agregar si, posición actual del puntero de palabra
Día 4 de diciembre
mov ah, [si]
cmp ah, 01h
Tengo cambio
gobackto_di: p>
mov ah, 01h
mov [si], ah
Agregar di, la posición actual del puntero de palabra
2 de diciembre p>
Mover dl, posición actual
mov ah, parte del segmento de código donde se encuentra la letra 02h.
mov BH 00h
mov dh, 01h
int 10h
mov cx, 00h
siguiente: push cx; nueva línea
mov cx, 00h
out_cycle:; retraso
push cx
mov cx, 00h
En ciclo:
Agregar cx, 01h
cmp cx, 50000d
jne in_cycle
Empujar dx
Película, 06h
mov dl, 0ffh
int 21h
Dx popular
jz pass; omitir si el búfer del teclado La parte está vacía.
cmp al, 1bh; si escribes ESC, volverás al menú principal.
je to_start1
cmp al," ";El juego se pausará si escribes un espacio.
Hice una pausa
cmp al, [di]; ¡ingresa las letras correctamente! ¡Saltar!
Desaparecí
Por:
popular cx
inc cx
cmp cx, speed
p>
je print
ciclo de salida jmp
Pausa: push dx; pausar procesamiento
Película, 06h
mov dl, 0ffh
int 21h
popular dx
cmp al, " "
jne pausa
jmp Pasa
a _ start 1:; Volver al menú principal
jmp start
Imprimir:
Ah, 0ah
mov al, " "
mov BH 00h
mov cx, 01h
int 10h
Empresa dh
mov ah, 02h
mov BH 00h
int 10h
Ah, 0ah
mov al, [di]
mov BH 00h
mov cx, 01h
int 10h
cx popular
inc cx
cmp cx, 21d
je print_next_letter
jmp siguiente línea
desaparece el procesamiento relacionado después de escribir letras
Cx popular
Cx popular
Ah, 0ah
mov al, " "
mov BH 00h
mov cx, 01h
int 10h
jmp hit
Imprimir siguiente letra:; Procesar vacante del puesto original
lea si, bandera de la vida
Agregar si, posición actual del puntero de palabra
4 de diciembre
mov ah, [si]
cmp ah, 1
Fallé
Ah, 0ah
mov al, " "
mov BH 00h
mov cx, 01h
int 10h
Empresa dh
mov ah, 02h
mov BH 00h
int 10h
Ah, 0ah
mov al," "
mov BH 00h
mov cx, 01h
p>int 10h
mov ah, 1
mov [si], ah
golpear: mov ah, 02h
mov BH 00h
mov dh, 01h
Mover dl, posición actual
int 10h
mov al, [di]; El número de la próxima carta nueva.
añadir al,7
cmp al,7ah
ja transmitir_letra
ah,0ah
mov BH 00h
mov cx, 01h
int 10h
mov [di], al
añadir letter_counter, 01h
jmp siguiente ciclo
Convey_Letter:
sub al, 7ah
agregar aluminio, 61h
ah, 0ah
mov BH 00h
mov cx, 01h
int 10h
mov [di], al
Agregar letter_counter, 01h
jmp siguiente ciclo
Fallo: mov ah, 0ah Procesamiento relacionado después del fallo del juego
mov al," "
mov cx, 01h
int 10h
Empresa dh
mov ah, 02h
mov BH 00h
int 10h
Ah, 0ah
mov al, [di]
mov BH 00h
mov cx, 01h
int 10h
mov ah, 02h
mov BH 00h
mov dh, 12d
mov dl, 17d
int 10h
push dx
mov ah, 09h
lead dx, failmeg
int 21h
dx popular
añadir dh, 2
mov ah, 02h
mov BH 00h
int 10h
mov ah, 09h
lea dx, indicador de falla 0
int 21h
Respuesta: mov ah, 07h
int 21h
cmp al, 0dh
jne re
clear_screen 01, 01, 23, 78
mov ah, 02h
mov BH 00h
mov dh, 11d
Movimiento dl, 20d
int 10h
p>Empujar dx
mov ah, 09h
lea dx, failmeg1
int 21h
Dx popular
Compañía dh
Empresa dh
mov ah, 02h
mov BH 00h
int 10h
mov ah, 09h
lea dx, indicador de falla 2
int 21h
notkey:
mov ah 07h
p>int 21h p>
cmp al, 0dh
Estoy empezando
cmp al, 1bh
Terminé
jmp notkey
Hora de inicio:
Clear_screen 00, 00, 24, 79
inicio de jmp
sobre: clear_screen 01, 01, 23 , 78
mov ah, 02h
mov BH 00h<
/p>
mov dh, 11d
mov dl, 15h
int 10h
mov ah, 09h
lead dx , indicador de fallo 3
int 21h
mov ah, 02h
mov BH 00h
mov DH 13d
mov dl, 15h
int 10h
mov ah, 09h
lead dx, indicador de falla 4
int 21h
mov ah 07h
int 21h
mov ah 07h
int 21h
clear_screen 00, 00, 24, 79
mov ax, 4c00h
int 21h
Fin principal
Fin del código
Fin Inicio p>