IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Управление динамиком компьютера
сообщение
Сообщение #1


Гость






Составить программу для генерации звуковых сигналов, период которых вычисляется по формуле T=(A+1000)/5.
Переменную А ввести с клавиатуры. Размерность А - 16-ти разрядное слово (WORD) (0...65535). Прерывание программы при нажатии клавиши ESC.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


для начала - посмотри вот эту темку.
Мелодия системного динамика


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Mikhail

Репутация: -  0  +


Я вообще в Ассемблере ламер, просто очень надо написать, для подруги для контрольной работы в Университет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


.model tiny
locals

.code
.startup
;ввод величины A
input_params:
lea dx,msg1
call read_int
jc exit ;ax = A

;ax = (ax + 1000)/5
xor dx,dx
add ax,1000
adc dx,0
mov cx,5
div cx

;запись коэффициента деления в 3-й канал таймера
mov dx,ax
mov al,0B6h
out 43h,al
mov al,dl
out 42h,al
mov al,dh
out 42h,al

;включить динамик
in al,61h
or al,3
out 61h,al

jmp input_params

;завершение работы программы
exit:

;выключить динамик
in al,61h
and al,0FCh
out 61h,al

;выход
mov ax,4C00h
int 21h

;--- Ввод целого числа ---
read_int proc
n = word ptr [bp-2]
push bp
mov bp,sp
sub sp,2
mov n,0
mov ah,9 ;вывод промпта
int 21h
@@read_char:
mov ah,8 ;ввыод символа
int 21h
cmp al,27 ;ESC -> выход с CF = 1
je @@cancel
cmp al,13 ;CR -> завершение ввода
je @@done
cmp al,'0' ;является ли введённый символ цифрой?
jb @@read_char
cmp al,'9'
ja @@read_char
push ax ;эхопечать
mov dx,ax
mov ah,2
int 21h
pop bx
sub bl,'0' ;добавление цифры в результат
xor bh,bh
mov ax,10
mul n
add ax,bx
mov n,ax
jmp @@read_char
;выход с CF = 1
@@cancel:
stc
jmp @@exit
@@done:
;переход на новую строку
mov dl,13
mov ah,2
int 21h
mov dl,10
mov ah,2
int 21h
;выход с результатом в AX и CF = 0
mov ax,n
clc
@@exit:
mov sp,bp
pop bp
ret
read_int endp

.const
msg1 db 'A> $'

end


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.11.2020 8:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name