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 p>
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~