Red de conocimiento informático - Conocimiento sistemático - Informe del juego de mecanografía neuronal del programa de lenguaje ensamblador

Informe del juego de mecanografía neuronal del programa de lenguaje ensamblador

La puntuación es demasiado pequeña.

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

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...$"

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]

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

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

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

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

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:

mov ah, 01h

mov [si], ah

Agregar di, la posición actual del puntero de palabra

2 de diciembre

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

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