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

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

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

> Обработка прерываний
сообщение
Сообщение #1


Знаток
****

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

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


Доброго времени суток! Мне нужно реализовать программу, которая выводила бы последовательно цифры от 0 до 9 в одно место экрана. При вводе с клавиатуры какой-либо цифры темп вывода менялся. Значение задержки между выводом очередного символа определяется следующим способом: введённую цифру умножить на 2 в степени 9, это и будет число повторений цикла задержки. Для анализа нажатия клавиши использовать вектор 1Ch. (завершение программы осуществляется при вводе цифры 0)
Проблема возникла непосредственно при написании подпрограммы обработки прерывания 1Ch...
Вот мои наработки по данной программе:

data segment
exit db 0 ;признак завершения программы
sym db "0","1","2","3","4","5","6","7","8","9" ;символ, выводимый на экран
pos dw 3840 ;позиция начального вывода символа
atr db 10 ;атрибут символа(зелёный)
old_cs dw ? ;адрес сегмента старого вектора 1Сh
old_ip dw ? ;адрес смещения старого вектора 1Ch
data ends

code segment
assume cs:code, ds:data

New_1Ch proc ;подпрограмма обработки прерывания 1Ch

iret
New_1Ch endp

ClnScr proc ;программа очистки экрана
push cx
push ax
push si
xor si,si
mov ah, 7
mov dl,' '
mov cx, 2000

cln1:
mov es:[si], ax
inc si
inc si
loop cln1
pop si
pop ax
pop cx
ret
ClnScr endp

Delay proc ;программа задержки
push cx
xor cx,cx
mov cl,9
sal count,cl
xor cx,cx
mov cx,count
d:
loop d
pop cx
ret
Delay endp

Out_Sym proc
push ax
push bx
push si
mov al,[sym+si]
mov ah,atr
mov bx,pos
call Delay
mov es:[bx],ax
pop bx
pop ax
ret
Out_Sym endp

;основная программа
start:
mov ax,data
mov ds,ax

mov ax, 4c00h
int 21h
code ends
end start


Конечно и эти подпрограммы требуют доработок... Вобщем, требуется Ваша помощь... smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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