Red de conocimiento informático - Computadora portátil - ¿Código fuente del teclado electrónico de ensamblaje 8086?

¿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

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

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

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

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 iniciop>