Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 09:16   #1
demon2321
 
Регистрация: 07.03.2011
Сообщений: 7
Восклицание Таймер (TASM)

Вводим с клавиатуры число в секундах, программа просто ждет это время и после делает выход!

Вот пример, но у меня почему-то он не работает(((
Цитата:
.model small
.stack 100h
.data

cr equ 0Dh ; \r
lf equ 0Ah ; \n

String db 'Kursovaya rabota', lf, cr, '$'
String2 db '"Systemnoe programmnoe obespechenie"', lf, cr, '$'
String3 db 'Studenta gruppy "ASOI-438"', lf, cr, '$'
String4 db 'Safina Rustama Faritovicha', lf, cr, '$'
String5 db 'Variant 18.2.2.2.2', lf, cr, '$'
String6 db lf, cr, 'Nazhmite klavishu dlya prodolzheniya...', lf, cr, '$'

String_init db 'Schityvanie vremeni', lf, cr, '$'

String_alarm db 'Zvonok!', lf, cr, '$'

.code
main:

mov dx, 03DAh ; Установка видеорежима
mov al, 10h
out dx, al
int 10h

mov dx, 03C0h ; Установка значения регистра видеоадаптера
mov al, 00h
out dx, al
int 10h

mov ax, @data ; Настройка сегментного регистра
mov ds, ax

mov ah, 09h ; Вывод текста

lea dx, String
int 21h
lea dx, String2
int 21h
lea dx, String3
int 21h
lea dx, String4
int 21h
lea dx, String5
int 21h
lea dx, String6
int 21h

mov ah, 00h ; Задержка до нажатия клавиши
int 16h

;начало очистки экрана
mov AX, 0600h ; AH=06 (прокрутка), AL=00 (весь экран)
mov BH, 07 ; нормальный атрибут (черно/белый)
mov CX, 0000 ; верхняя левая позиция
mov DX, 184fh ; нижняя правая позиция
int 10h ; вызов BIOS


mov ah, 09h ; Вывод текста "Считывание времени"
lea dx, String_init
int 21h

mov ah, 02 ; Чтение текущего времени -> секунды в DH
; INT 4aH
int 1Ah

mov ah, 06 ; Установка таймера
add dh, 5 ; Через 5 секунд
int 1Ah

push ds

lea dx, new_4a
MOV AX,SEG new_4a ;сегмент процедуры
MOV DS,AX ;помещаем в DS
mov ah,25h
mov al,4Ah
int 21h
pop ds

mov ah, 07 ; Сброс таймера
int 1Ah

mov ah, 00h ; Задержка до нажатия клавиши
int 16h

new_4a proc FAR
push AX
mov ah, 09h
lea dx, String_alarm
int 21h
pop AX

;MOV AL,20H ;эти две строки надо использовать
;OUT 20H,AL ;только для аппаратных прерываний
IRET
new_4a endp

exit:

mov ah, 49h ; Освобождение памяти
int 21h
mov ah, 4Ch ; Выход
int 21h

end main
demon2321 вне форума Ответить с цитированием
Старый 09.12.2011, 12:29   #2
zhan313
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 44
По умолчанию

А должен?
Под Win работать не будет (блокируется функция 25H).
Под DOS или хороший эмулятор поправил :

mov ah, 07 ; Сброс таймера
int 1Ah ; передвинул после ожидания, иначе он не успевает ждать, как его сбросили

jmp exit ; иначе после нажатия клавиши выполнится процедура прерывания с дальним возвратом

new_4a proc FAR
push ax ;===
push ds
push dx

mov ax,seg String_alarm ; ds указывает не на сегмент данных программы, поправим
mov ds,ax
mov ah, 09h
lea dx, String_alarm
int 21h
pop dx
pop ds
pop ax ; ====

IRET

new_4a endp

exit:
; собственно выделения памяти не было, освобождать нечего
;mov ah, 49h ; Освобождение памяти
;int 21h


и напоследок: желательно вернуть на место адрес предыдущего обработчика будильника
zhan313 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер (TASM) demon2321 Помощь студентам 0 30.11.2011 08:54
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
TASM Hant111 Фриланс 5 23.03.2010 21:54
TASM romale Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 16.12.2009 23:03
tasm>>fasm better Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 09.02.2009 19:34