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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2008, 18:39   #1
Festovec
Пользователь
 
Регистрация: 18.12.2008
Сообщений: 30
По умолчанию Обработчик вектора прерывания

Нужна помощь в обработке вектора прерывания:по нажатию клавиши a на клаве, на экране должен выводиться алфавит от A до Z;
по нажатию клавиши b алфавит от Z до A, но только по нажатию клавиш.
Я написал процедуры вывода алфавита "от A до Z" и "от Z до A", но они выводятся сразу друг за другом, нужно осуществить, чтобы через 09h, верно, может кто-нибудь привести пример?

Код:
.model small
.stack 100h
.data
az dw 41h
za dw 5ah
prob db 54 DUP(' '), '$'
c dw 26
a dw ?
b dw ?
.code
mov     ax, @data
mov     ds, ax
mov ax,az
mov bx,za
mov cx,c
call sum
call zam
call vich
 
mov  ah, 4ch
int  21h
sum proc 
    mov a,ax
    mov ah,02h
    mov dx,a
    int 21h
    add ax,1h
    loop sum
    ret
sum endp
vich proc
     mov b,bx
     mov ah,02
     mov dx,b
     int 21h
     sub bx,1h
     loop vich
     ret
vich endp  
zam proc
     mov cx,c
     xor dx,dx
     mov dx,offset prob
     mov ah,09h
     int 21h
     ret
zam endp            
End

Последний раз редактировалось rpy3uH; 18.12.2008 в 18:54.
Festovec вне форума Ответить с цитированием
Старый 19.12.2008, 12:11   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

что-то код с прерываними никак не связан
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 19.12.2008, 18:15   #3
Festovec
Пользователь
 
Регистрация: 18.12.2008
Сообщений: 30
По умолчанию

Я написал код по выводу, надо написать код в которм будет прерывание и этот код включить туда, т.е. чтобы выполнялся вывод по клавише
Festovec вне форума Ответить с цитированием
Старый 21.12.2008, 10:34   #4
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

Код:
...
m0:
mov ah,08h
int 21h
cmp al,'b'
je m1
jmp m0
m1:call proc1
jmp _end
m2:call proc2 
_end:
mov ah,04ch
int 21h
...
что-то такое,если я правильно тебя понял..

Последний раз редактировалось smileman; 21.12.2008 в 19:16.
smileman вне форума Ответить с цитированием
Старый 21.12.2008, 20:17   #5
Festovec
Пользователь
 
Регистрация: 18.12.2008
Сообщений: 30
По умолчанию

Из литературы я нашел, что прерывание должно проводится программно, старый вектор сохраняется при помощи 35h вставляется моя программа и ожидание нажатие клавиши, потом вывод и выгрузка старого вектора при помощи 25h
Festovec вне форума Ответить с цитированием
Старый 24.12.2008, 19:42   #6
Festovec
Пользователь
 
Регистрация: 18.12.2008
Сообщений: 30
По умолчанию

Спасибо, smileman, на основе твоего кода сделал свой. Кому интересно
Код:
.model small
.stack 100h
.data
az dw 41h
za dw 5ah
c dw 26
p dw 80
a dw ?
b dw ?


.code
mov     ax, @data
mov     ds, ax
mov 	es, ax
mov 	ax,0003h	
int 	10h		
m0: mov ah,08h
    int 21h
    cmp al,'a'
    mov ax,az
    mov cx,c
    je m1
    mov ah,08h
    int 21h
    cmp al,'b'
    mov bx,za
    mov cx,c
    je m2
    jmp m0
m1: call sum 
    jmp m0
m2: call zam	 
    jmp m0 

mov  ah, 4ch
int  21h
sum proc 
    mov a,ax
    mov ah,02h
    mov dx,a
    int 21h
    add ax,1h
    loop sum
    ret
sum endp
vich proc
     mov b,bx
     mov ah,02
     mov dx,b
     int 21h
     sub bx,1h
     loop vich
     ret
vich endp 
zam proc
     mov cx,c
     call vich
     ret
zam endp        
End
Festovec вне форума Ответить с цитированием
Старый 06.04.2010, 19:18   #7
AleksIv
 
Регистрация: 06.04.2010
Сообщений: 3
По умолчанию

помогите пожалуйста написать прогу:обработчик прерываний от таймера,выводит в левый верхний угол текущее время час:мин:сек через 5 секунд
AleksIv вне форума Ответить с цитированием
Старый 06.04.2010, 20:59   #8
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Если наработок нет обращайтесь помогу недорого
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 07.04.2010, 08:08   #9
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

обращайтесь, сделаю быстро, качественно, недорого.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 07.04.2010, 10:05   #10
Kastaneda
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 22
По умолчанию

Вот тема http://www.programmersforum.ru/showthread.php?t=88021, должно помочь.
Kastaneda вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прерывания DOS odi_noki Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 26 14.11.2008 13:51
Физика. построить график пространственного распределения вектора магнитной индукции поля проводника Alar Помощь студентам 13 09.06.2008 02:47
прерывания sergei64_89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 22.04.2008 13:37
Перехват вектора 09Н. Assembler. vladb2000 Помощь студентам 2 14.12.2007 11:31
Операторы прерывания Иринкаа Общие вопросы Delphi 13 27.11.2007 21:52