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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 10:34   #1
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию Помогите с таймером 8254

Нужно измерить промежуток времени менее 55 мсек
для этого решил использовать таймер. Чтобы не трогать 0-й канал, использую 2-й канал.
Вот код:
Цитата:
mov ax,0b800h
mov es,ax
mov al,0b6h ;управляющее слово таймера:
out 43h,al ;вывод в регистр режима
jmp $+2
mov al,0
out 42h,al
jmp $+2
out 42h,al
jmp $+2


lp1:



mov al,80h ;управляющее слово таймера: режим "защелки" для канала 2
out 43h,al ;вывод в регистр режима
in al,42h
mov bl,al
in al,42h
mov bh,al
mov dx,1010h
mov ah,0fh
mov al,bh
call printhex
mov al,bl
call printhex
in al,60h
dec al
jnz lp1
mov ah,4ch
int 21h

printhex proc ; преобразование байта в текстовый вид
; al - символ;ah-атрибуты; dh-x; dl-y
push ax
shr al,4 ;преобразуем старшую(левую)тетраду в символ
add al,'0'
cmp al,'9'
jbe @m1
add al,7
@m1:
call printchar
inc dh ;увеличиваем на 1 координату Х
pop ax
and al,0fh ;тоже самое делаем и с младшей тетрадой
add al,'0'
cmp al,'9'
jbe @m2
add al,7
@m2:
call printchar
inc dh ;увеличиваем на 1 координату Х
ret
printhex endp

printchar proc ;процедура вывода символа на экран
; al - символ;ah-атрибуты; dh-x; dl-y
push bx
push dx
push dx
xor dh,dh ;смещение в экранном сегменте расчитывается так: dl(y)*80(кол-во столбцов)*2(два байта на символ) + dh(x)*2(два байта на символ)
shl dx,5
mov bx,dx
shl dx,2
add bx,dx ;y*160
pop dx
mov dl,dh
xor dh,dh
shl dx,1 ;x*2
add bx,dx
mov es:[bx],ax ;выводим на экран
pop dx
pop bx
ret
printchar endp
Это работает под windows, работает в виртуальной машине с установленной ДОС, но НЕ работает под чистой ДОС. Счетчик не меняется! Может кто-нибудь сталкивался с подобной проблемой
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с таймером PROFI_I Компоненты Delphi 7 08.01.2009 20:51
Помогите плиз с таймером kinals Помощь студентам 23 12.08.2008 13:18
Помогите с таймером Михаил Юрьевич Общие вопросы Delphi 10 03.06.2008 20:35
Помогите, плз, разобраться с таймером Ya_Nika Общие вопросы C/C++ 3 11.03.2008 07:58
Работа с Таймером Иринкаа Компоненты Delphi 6 22.11.2007 21:59