Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Прочитать бит Ack (готовность принтера)

Автор: Jill 9.08.2006 18:28

Сам ассемблерный код есть:

Код
mov dx,379h
in al,dx
and al, 01000000b
shr al, 6; {состояние 6 бита}

Как оформить это в паскале? Подскажите, плз

Автор: Malice 9.08.2006 18:42

Цитата(Jill @ 9.08.2006 15:28) *

Как оформить это в паскале? Подскажите, плз

Вот так:
Код
function test:byte;assembler;
asm
mov dx,379h
in al,dx
and al, 01000000b
shr al, 6
end;


Автор: Jill 9.08.2006 18:55

Спасибо конечно smile.gif Но функцию я оформлю wink.gif
Может, некорректно сформулировала вопрос.
Меня интересует то, КАК это вывести (типа writeln(состояние бита)).
...или сама функция выдает значение?

Автор: volvo 9.08.2006 19:01

Опять же непонятно, что именно у тебя не получается? Если тебе надо словесное описание, утановлен бит или сброшен, то вот так:

function _test: byte;
begin
_test := (Port[$379] and $40) shr 6;
end;

begin
if _test = 1 then writeln('set')
else writeln('not set');
end.

Или тебя интересует логическая переменная? Тогда просто TypeCast...

Автор: Jill 9.08.2006 19:13

Все, разобралась, спасибо smile.gif
Только не пойму, почему set - даже если LPT не подсоединен. По идее - принтер ведь не готов?

Оффф... volvo, не мог бы ты зайти в левопрошитое дерево? пожалуйста