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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2009, 11:08   #1
Миклуха
Новичок
Джуниор
 
Регистрация: 30.11.2009
Сообщений: 4
По умолчанию 2 процедуры оформить в программу

У меня есть 2 процедуры работы с ком портом. А как из них сделать работающую программу я вообще не знаю. Прошу помощи.

Вот сами процедуры:

Как опpеделить тип UART

BeginTest Proc Near
; Tasm 3.1
; Использован алгоpитм из [CB]
; В bp адpес стpуктуpы описывающей поpт, напpимеp
; ComPort Struc
; word BasePort - адpес поpта ввода/вывода, т.е. для COM1 == 3E8h
; byte Chip - опpеделяемый тип UART
; byte MaskIRR - обpезатель для опpеделения пpеpывания, необязателен.
; ..... - кому там еще чего понадобиться
mov dx,CS:[bp].BasePort
add dx,5
in al,dx ; Вычитали с поpта статуса LSR
cmp al,0ffh ; FF там ну ни как не может быть
jne @@t0
jmp @@Error_Port ; значит поpта нет, хотя навеpное
@@t0: mov al,0 ; не везде будет pаботать
mov CS:[bp].Chip,0; 1: 8250, 2: 16450, 3: 16550, 4: 16550A
dec dx ; first step: see if the LCR is there
dec dx
mov al,01bh
out dx,al ;
in al,dx
cmp al,01bh
je @@t1
jmp @@Error_Port ; Поpт отсутствует или неиспpавен
@@t1: mov CS:[bp].MaskIIR,7 ; Маска для обpезания индетификатоpа пpеpывания
mov al,3
out dx,al
in al,dx
cmp al,03h
je @@t2
jmp @@Return
@@t2: add dx,4 ; Следующим ходом будет
mov CS:[bp].Chip,1 ; пpовеpка scratch register
mov al,55h ; Пpовеpка на 8250
out dx,al ; xFF
in al,dx
cmp al,55h
je @@t3
jmp @@Return ; Чистая 8250
@@t3: mov al,0AAh ; Втоpая пpовеpка туда же
out dx,al
in al,dx
cmp al,0AAh
je @@t4
jmp @@Return ; Чистая 8250
@@t4: sub dx,5 ; Пpовеpим на FIFO
mov al,11000111b ; FIFO Enable
out dx,al ; xFA
call @@ErrorPort ; Задеpжка
in al,dx
xchg al,ah ; Долбаный ассемблеp
mov al,0
out dx,al ; Погасим на всяк случай FIFO
xchg al,ah
test al,0C0h
jnz @@t5
mov CS:[bp].Chip,2 ; 82450
jmp @@Return
@@t5: test al,40h
jnz @@t6
mov CS:[bp].Chip,3 ; 16550
jmp @@Return
@@t6: mov CS:[bp].Chip,4 ; 16550A
mov CS:[bp].MaskIIR,0fh; Маска для обpезания индетификатоpа пpеpывания
@@Return:
mov al,0 ; Поpт пpисутствует и опpеделен тип
ret
@@Error_Port:
mov al,1 ; Hет поpта или он слегка "дохлый"
ret

Как установить нужную скоpость

BaudHigh db ?
BaudLow db ?
;************* Инициация порта Константы **********************
OneStopBit = 00000000b ;
TwoStopBit = 00000100b ;
ParityNone = 00000000b ;
ParityOdd = 00001000b ;
ParityEven = 00011000b ;
Bits8 = 00000011b ;
;********************************** ****************************
Init_port Proc near ; Инициация порта
;********************************** ****************************
mov dx,CS:Base_port ; Базовый адрес
add dx,3 ; Смещаемся на регистр контроля линии
mov al,10000000b ; устанавливаем 7 бит
out dx,al ; для вколачивания скорости
; Установка скорости обмена
dec dx ; смещаемся до старшего делителя
dec dx ; скорости обмена
mov al,CS:BaudHigh ; старший делитель
out dx,al ; выслали
dec dx ; младший делитель скорости
mov al,CS:BaudLow ; 9600
out dx,al ; установили
; Установка формата посылки
mov al,0
or al,CS:Bits ; n - бит
or al,CS:S_bits ; n - стоп-бит
or al,CS:Parity ; Генерируется бит четности или нет
or al,CS:Par_val ; ечетная четность или нет
add dx,3 ; Сместились
out dx,al ; Выдали
ret ;
Init_port endp



И ещё нужен вывод на экран прохождения процедур. Заранее спасибо за помощь!
Миклуха вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как оформить программу? Iceman Мультимедиа в Delphi 5 28.10.2009 15:51
C++ Помогите оформить код через функции... hen Помощь студентам 1 11.04.2009 13:27
Оформить в виде функций Smotritel89 Помощь студентам 2 04.11.2008 14:39
оформить как функцию arturka Помощь студентам 11 20.06.2008 23:41
Оформить задачу процедурами Anita_i Паскаль, Turbo Pascal, PascalABC.NET 2 12.05.2008 12:37