Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/41: Рейтинг темы: голосов - 41, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 24.12.2009
Сообщений: 5

будильник

26.08.2010, 23:37. Показов 7746. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите с прогой, накопал исходник, но не пойму почему не работает...
Вложения
Тип файла: rar 1.rar (1.5 Кб, 163 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.08.2010, 23:37
Ответы с готовыми решениями:

Будильник
Скажите почему программа компелируется, но звука нет, хотя .exe файл создан вот исходник: TITLE Программа "Будильник" ...

Будильник
Ребята, помогите пожалуйста с задачками по ассемблеру! Написать нужно на чистом ассемблере и с комментариями. В соседней теме по С++...

Будильник на ассемблере исправить
есть код будильника,должна воспроизводится мелодия ,но этого не происходит,необходимо исправить!так же где идет ввод значения часов и минут...

4
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
27.08.2010, 10:57
Потому что в программу нужно добавить бесконечный цикл, либо сделать ее резидентной. Второе предпочтительней.
1
1 / 1 / 0
Регистрация: 24.12.2009
Сообщений: 5
29.08.2010, 10:27  [ТС]
а не поможешь со вторым вариантом?
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
29.08.2010, 11:45
Держи. В программе были ошибки. Запускать нужно из виртуалки с установленным ДОСом.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
TITLE Программа "Будильник"
 
;Определение сегмента стека /можно оставлять без изменения/
;Имя сегмента стека - stacksg
StackSg SEGMENT PARA STACK 'Stack'  ;Стандартный заголовок определения стека
    dw 32 dup(?)                ;Задание глубины стека
StackSg ENDS                        ;Конец сегмента стека
 
;Определение сегмента данных
DataSg SEGMENT PARA 'Data'          ;Стандартный заголовок определения данных
    ;Здесь определяются данные
    MINUTES     DW    1     ;хранит число минут до звонка
    ALARMCOUNT  DW    0     ;хранит счетчик времени для звонка
DataSg ENDS      ;Конец сегмента данных
 
;Сегмент кода - тело программы
CodeSg SEGMENT PARA 'Code'          ;Заголовок сегмента кода
    ASSUME cs: CodeSg, ds: DataSg, ss: StackSg
Begin PROC far                      ;Начало программы - основной процедуры
    ;---Пролог EXE-файла---
    push ds
    mov ax,DataSg
    mov ds,ax
    ;---Конец пролога---
 
    ;---Непосредственно программа---
 
;---установка ожидаемого значения счетчика времени суток
    ;CALL  REQUEST_MINUTES  ;запрос числа минут до звонка (1-60)
    MOV   AX,0001;MINUTES   ;пересылка в AX
    MOV   BX,1092           ;число импульсов счетчика в минуте
    MUL   BX                ;умножаем - результат в AX
    push ax
    ;получаем текущее значение счетчика
    MOV   AH,0              ;номер функции чтения счетчика
    INT   1AH               ;читаем значение, младший байт в DX
    ;складываем оба значения
    pop ax
    ADD   AX,DX             ;
    MOV   ALARMCOUNT,AX     ;получаем нужное значение счетчика
 
 
;---заменяем вектор пустого прерывания
    PUSH  DS                ;сохраняем сегмент данных
    MOV   AX,SEG ALARM      ;берем сегмент процедуры ALARM
    MOV   DS,AX             ;помещаем его в DS
    MOV   DX,OFFSET ALARM   ;берем смещение процедуры
    MOV   AL,1CH            ;номер изменяемого вектора
    MOV   AH,25H            ;функция изменения вектора
    INT   21H               ;меняем вектор
    POP   DS                ;восстанавливаем сегмент данных
;
;---дальше продолжается программа
;
 
;---в конце программы возвращаем вектор прерывания
;   MOV   DX,0FF53H         ;оригинальные значения для
;   MOV   AX,0F000H         ;прерывания 1CH
;   MOV   DS,AX             ;помещаем сегмент в DS
;   MOV   AL,1CH            ;номер изменяемого вектора
;   MOV   AH,25H            ;номер функции
;   INT   21H               ;восстанавливаем вектор
    pop cx
    mov dx,cs
    sub dx,cx
    add dx,codsize
    mov ax,3100h
    int 21h
;   ret
Begin ENDP      ;Стандартный конец программы
 
 
;---процедура выдачи звукового сигнала
ALARM PROC FAR          ;создаем длинную процедуру
    push ds
         PUSH AX           ;сохраняем изменяемые регистры
         PUSH CX           ;
         PUSH DX           ;
    mov ax,DataSg
    mov ds,ax
;---читаем счетчик времени суток
         MOV  AH,0         ;номер функции чтения счетчика
         INT  1AH          ;читаем значение счетчика
;---сравниваем с требуемым значением
         MOV  CX,ALARMCOUNT   ;берем требуемое значение
         CMP  DX,CX        ;сравниваем с текущим
         JNE  NOT_YET      ;если неравны, то на выход
;---выдаем звуковой сигнал, если значения совпали
         CALL BEEP         ;эта процедура не показана
;---иначе возвращаемся из прерывания
NOT_YET: POP  DX           ;восстанавливаем регистры
         POP  CX           ;
         POP  AX           ;
    pop ds
         IRET              ;возврат из прерывания
ALARM ENDP              ;конец процедуры
 
;---------------------------Гудок-----------------------------------------
Beep PROC near      ;---гудок динамика
    mov dx,800  ;счетчик числа циклов
    in  al,61h  ;читаем порт B 8255
    and al,0FEH ;выключаем бит таймера 8253
    NextCycle:
        or al,2         ;включаем бит динамика
        out 61h,al  ;посылаем байт в порт B
        mov cx,150  ;длительность первой половины
    CycleUp:
        loop CycleUp    ;задержка пока сигнал высокий
        and al,0FDH ;выключаем бит динамика
        out 61h,al  ;посылаем байт в порт B
    CycleDown:
        loop CycleDown  ;задержка пока сигнал низкий
        dec dx          ;уменьшаем счетчик циклов
        jnz NextCycle   ;повторяем цикл пока DX не 0
    ret
Beep ENDP
codsize=($-Begin)/16+1
;-------------------------------------------------------------------------
CodeSg ENDS     ;
END Begin       ;
2
1 / 1 / 0
Регистрация: 24.12.2009
Сообщений: 5
30.08.2010, 23:41  [ТС]
Спасибо! Все работает )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.08.2010, 23:41
Помогаю со студенческими работами здесь

Не работает будильник по int 4Ah
Добрый день. Сделал тестовую програмку для будильнику. Устанавливаю минуты с последней цифрой 4, но можно и другую. На int 4Ah вешаю...

Будильник по прерыванию int 4ah
Задача стоит в том, чтобы задать будильник и в указанное время вызвать процедуру( в моем случае Beep). Я прочитал, что делается это с...

Резидентный будильник (не могу изменить сигнал)
Есть резидентный будильник , он работает правильно, только вот сигнал не очень, поменял частоты, теперь уши режет.... Как бы изменить...

Составить программу, где есть КМОП-часы, будильник
Помогите плииз !! По ассемблеру ничего не шарю.:((( Вот моя задача: Некоторая тестовая задача выводит на экран текущее время из КМОП –...

Будильник
Подскажите пожалуйста, что здесь не так, уже голову сломала над этим. using System; using System.Collections.Generic; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru