¿Código fuente del teclado electrónico de ensamblaje 8086?
Esta es una tarea diseñada para el curso Principios de microcomputadoras. Se implementa utilizando el lenguaje ensamblador 8086. Puede consultarla. Nota: La función de 1.0 se limita a la reproducción de los bajos 1 – 7. , correspondientes a las teclas numéricas 1 – 7 respectivamente. Si presionar otras teclas puede hacer que la matriz se salga de los límites y produzca resultados impredecibles, presten atención a esto. Se recomienda dividir las teclas por 7 para obtener el resto. evitar fuera de límites El código fuente es el siguiente: music1.0.asmdata segment p>
freq dw 262,277,294,311,330,349
dw 370,392,415,440,466,494,-1
time. dw 400,400
dw 400,400,400,400,400,400,400
dw 400,400,400,400,400 p>
buf db 255
nul db 100 dup(20)
db 256 dup(?)
sys db “Walter Clozet Music Player v1 .0″
endl db 0ah
db 13
instr db ">$"
pila de segmento de pila final de datos
wcs dw 200 dup(?)
segmento de código final de pila
suponer cs:code,ds:data,ss:stacks
start:mov ax ,data
mov ds,ax
mov si,frecuencia de compensación
mov di,tiempo de compensación
lea dx,sys p>
mov ah,09h
int 21hl1:
mov ah ,01h
int 21h
cmp al,' q'
je exit
sub al,31h
mov ah,2
mul ah
mov cx,14
;div cx
;mov al,ah
mov ah,0; ax%=28
empujar hacha
añadir hacha,30h
mov dl,al
mov ah,6
int 21h
pop axpush si
añadir ax,si
mov si,ax
mov cx,[si]
pop si
mov bx,[di]
inc cx
llamar a playjmp l1
salir:
mov ah,4ch p>
int 21h;reproducir en frecuencia en cx durante tiempo en bx
reproducir proc nearpush dx
mov dx,8h
;init 8253
mov al,0b6h
out 43h,al ;init 10 contador2 11 lectura l8 ,h8 011type3 0 bin
;establecer frecuencia de sonido fout=fclk/n
mov ax,3208h ;fout es ax
div cx ;n=fclk/ fuera
fuera
42h,al
mov al,ah
fuera 42h,al
;inicio 8253,comienza el sonido
en al,61h
mov ah,al ;almacenar el anterior al ah
o al,3 ;al=111?
salida 61h,al;retraso cierto tiempo,sonido activado
l2: empujar dx
empujar hacha
mov dx,8h
mov hacha,0f05h
s1 : sub ax,1
sbb dx,0 ;dx=dx-cf
jnz s1 ;bucle hasta que cf sea cero, ax menos entonces
pop ax
pop dx
dec bx
jnz l2;stop 8253
mov al,ah ; out 61h,al
pop dx
ret
play endp
código termina
fin inicio p>p>