Red de conocimiento informático - Conocimiento sistemático - Experimento de programación de campanas en lenguaje ensamblador

Experimento de programación de campanas en lenguaje ensamblador

código SEGMENTO

ASUME CS:código

inicio:

MOV AH,1

INT 21h

MOV AH,0

MOV CX,AX

comenzar:MOV DL,7

MOV AH,2

INT 21h

Inicio de LOOP

MOV AH,4ch

INT 21h

código FINALIZA

FIN inicio

Pruébelo, tal vez porque el intervalo de tiempo es demasiado corto, no puede saber cuántas veces sonó

¡Necesita hacer un segmento de programa retrasado! ! Pero esto es lo básico, es simple.

Hay uno complicado a continuación. Eche un vistazo, está copiado de Internet:

SEGMENTO de datos

ts DB 'por favor ingrese:$' <. /p >

otra vez DB 0ah,0dh,'otra vez?(s/n)$'

datos FINALIZA

código SEGMENTO

ASUME CS: code, DS:data

enter1 PROC ;Subrutina, la función es retorno de carro y avance de línea

PUSH AX

PUSH DX

MOV AH ,02h

MOV DL,0dh

INT 21h

MOV DL,0ah

INT 21h

POP DX

POP AX

RET

enter1 ENDP

inicio:

MOV AX,datos ; Cargar segmento de datos

MOV DS,AX

a0003:LEA DX,ts

MOV AH,09h ;Llame a la función 09 para mostrar la cadena de salida

INT 21h

MOV AH,01h ;Llamar a la función 01 para recibir caracteres

INT 21h

CMP AL,'1' ;Los caracteres recibidos son iguales que 1 Compara el ASCll de 9 y transfiere si es menor que

JB a0001

CMP AL,'9' ; Compara el carácter recibido con el ASCll de 9 y transferir si es mayor que

JA a0001

SUB AL,30h ;Convertir código ASCll a números

XOR AH,AH ;Borra los ocho bits superiores de AX, en este momento el número en AX es el número recibido

MOV CX,AX ;Asigna el valor de AX a CX para controlar el bucle

a0002:MOV AH,02 ; Bloque de anillo

MOV DL,07

INT 21H

LOOP a0002 ;Comando de bucle

a0001:LEA DX,nuevamente ;Pregunta si para ejecutar el programa nuevamente

MOV AH ,09h

INT 21h

MOV AH,01h ;Recibir caracteres

INT 21h

LLAMADA enter1

CMP AL,'y' ;Compara el carácter recibido con y, si es el mismo, transfiere

JE a0003

CMP AL,'Y' ;Compare el carácter recibido con Y, si es el mismo Luego transfiera

JE a0003

MOV AH,4ch

INT 21h

código FINALIZA

INICIO FINAL

En cuanto al primer programa, dije que puede deberse a que el tiempo de ejecución de la computadora es demasiado corto y no se puede saber cuántos veces suena. Tienes que escribir un programa de retardo tú mismo, como 2 Construyendo así.

Entonces puede emitir n sonidos, pero no puedes distinguirlo~