Answer the question
In order to leave comments, you need to log in
Why doesn't it compile? What does 27d mean and where does it come from?
why does the program stop compiling when writing the line mov a, al? How to fix it?
according to which table to look for key codes and where did the code 27d come from (it works with this code)?
.286
.model small
.stack 256h
.data
msg label byte ;стуктура для ввода символов с клавиатуры
maxnum db 6 ; переменная для перевода символов в число
reallen db (?)
numfld db 6 dup (?)
x dw ?
mult10 dw 1
txt db 'введите тон звучания ',10,13,'$'
txt1 db 'введите длительность звуания'
a dw 30 ; test
ton dw 200 ; test
time dw 100
.code
asbin proc
mov MULT10,0001
mov x,0
mov cx,10
lea si,numfld-1
mov bl,reallen
sub bh,bh
b20:
mov al,[si+bx]
and ax,000fh
mul MULT10
add X,ax
mov ax,MULT10
mul cx
mov MULT10,ax
dec bx
jnz b20
ret
asbin endp
sound proc
mov al,0B6h ;загрузка управлющего слова в таймер
out 43h,al ;
mov dx,0014h ; задание мах периода звука
mov ax,4F38h
div di ; вычисление фактиеского преиода звука
out 42h,al ;загрузка младшего байта периода звука в таймер
mov al,ah
out 42h,al ; загрузка старшего
in al,61h ;чтение порта состояния динамика
mov ah,al ;сохраниение значение порта состояния в
or al,3 ;включение звука установкой 2х младших бит в единицу
out 61h,al ;динамик начинает звучать
l1: mov cx,2801h ;задержка в 1 млсек
l2: loop l2 ;цикл задержки
dec bx ;уменьшение длительности звучания на 1 дискрету !!!делаем звук бесконечным, нужно добавить выход по нажатию клавиши
jnz l1 ;цикл отработки длительности звучания динамика
mov al,ah ;выключение звука от динамика
out 61h,al
ret
sound endp
main proc far
pusha
;mov ax,@data
;mov ds,ax
;mov ah,9
;lea dx,txt1
;int 21h
;mov ah,0ah ; ввод символов с клавиатуры в буфер msg
;lea dx,msg ; .
;int 21h ; .
;call asbin ; преобразование символов в число
;mov ax, x ;ввод переменной а
;mov a,ax
fill:
;ввод в переменную кода клавиши
mov ah,0 ;ожидание нажатия клавиши
int 16h
cmp al,27d ;проверка кода клавиши ESC
je endprg_;
; mov a,al ;debug but must work
;вычисление формулы периода
mov ax, 50
add ax, a
mov bl, 2
div bl
mov time, ax
mov di, 200
mov bx, time
call sound
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;...
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
loop fill
endprg_:
popa ;восстановление из стека регистров
mov ah,4ch ; возврат в ОС
int 21h
main endp
end main
Answer the question
In order to leave comments, you need to log in
why does the program stop compiling when writing the line mov a, al? How to fix it?
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question