.286 .model small .stack 20h .data msg1 db 13,10,'Введите T:',13,10,'$' msg2 db 13,10,'Введите To:',13,10,'$' msg label byte ;структура для ввода символов клавиатуры maxnum db 5 ;масимальное количество символов reallen db ? numfld db 5 dup (30H) ;буфер для ASCII кодов сивмволов T dw ? To dw ? sum dw ? z dw 0 ;результат преобразования символов в часло mult10 dw 0;вспомогательная переменая для преобразования символов в часло .code sound proc pusha ;mov di,6000 ;частота звука ;mov bx,2000 ;длительность 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 out 61H,al l1: mov cx,2801H l2: loop l2 dec bx jnz l1 mov al,ah out 61H,al popa ;mov ah,4cH ;int 21H ret sound endp asbin proc ;процедура преобразования символов в часло mov mult10,0001 ;инициализация фактора преобразования mov z,0 ;обнуление результата mov cx,10 ;основание системы счисления lea si,numfld-1 ;установка указателя на начало буфера mov bl,reallen ;загрука фактического колиества символов часла sub bh,bh ;обнуление регистра bh B20: ;цикл преобразования символов часло mov al,[si+bx] ;загрузка символа из конца буфера and ax,000fH ;выделение младешей тетрады mul mult10 ;выделение еденицы и умножение цифры на 10 в степени n add z,ax ;прибавление промежуточного результата mov ax,mult10 ;загрузка переменной нового значеня mult10 в ax mul cx ;умножение переменной mult10 на 10 mov mult10,ax ;сохранение нового значение переменной dec bx ;перемещение указателя на следующий разряд числа jnz B20 ;продолжение цикла преобразования ret asbin endp start: mov ax,@data mov di,500 ; загрузка частоты звучания динамика mov bx,T; загрузка длительности звучания в тактах м/п call sound mov di,1000 ; загрузка частоты звучания динамика mov bx,T; загрузка длительности звучания в тактах м/п call sound mov di,1500 ; загрузка частоты звучания динамика mov bx,T; загрузка длительности звучания в тактах м/п call sound kc:mov ah,4cH int 21H end start