[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Если хочется экономить ножки для дешифрации то нужно выкручиваться на ассемблере:
Port50 DD ? ; здесь храниться значения портов 50,51,52,53
Ввод байта из порта 53 прост
mov dx,50h ; адрес порта
in eax,dx ; считали двойное слово
shr eax,24d ; результат в al. Можно сдвинуть циклически "rol eax,8"
Вывод посложнее:
Нужно обнулить старший байт, и туда вписать новое значение
mov dl,value ; байт для вывода в порт 53
shr edx,24d ; теперь он на нужном месте
mov eax,Port50 ; старое значение портов 50,51,52,53
and eax,0ffffff ; очистили место порта 53
or eax,edx ; новое значение порта 53
mov dx,50h ; адрес порта
out dx,eax ; порты 50,51,52 остались прежними, порт 53 изменился
Естественно порты 50,51,52,53 должны принадлежать проектируемому устройству. В противном случае нужна полная дешифрация.
При таком обращении порт 50 всегда на D0..D7, 51 на D8..d15 итд.
E-mail: info@telesys.ru