Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.13;
Скачать: CL | DM;

Вниз

asm&lpt   Найти похожие ветки 

 
nollie   (2003-10-28 09:43) [0]

asm
MOV DX,0378H
MOV AL,167
OUT DX,AL
end;

не печатает... в чем проблема?


 
Digitman ©   (2003-10-28 09:54) [1]

с чего ты так уверен, что адрес паралл.порта в данный момент именно 378h ?


 
nollie   (2003-10-28 10:23) [2]

а что, он еще и меняется постоянно?


 
Digitman ©   (2003-10-28 10:49) [3]

а почему бы и нет ?
ты что-нибудь о технологии Plug&Play слышал ? сто лет в обед ей скоро будет) ... в соответствии с концепцией P&P опер.система может и имеет право распределить устройству, поддерживающему технологию P&P, те аппаратные ресурсы, которые она (система) считает незанятыми на момент иниц-ции устр-ва, и которые устройство перечисляет в момент запроса к нему в кач-ве допустимых.

номер порта является аппаратным ресурсом (арбитражем подобных ресурсов "заведует" ОС), и если устройство не помечено как LEGACY и контроллер паралл.порта есть P&P-устройство, то система вполне может назначить для контроллера и иной порт (не обязательно 378h)... равно как и для любого другого P&P-устроойства ... равно как и для любого другого аппар.ресурса (диапазон адресов ввода/вывода, каналы ПДП, номера прерываний и т.д. и т.п.)


 
nollie   (2003-10-28 11:16) [4]

ладно если адрес другой, то что делать?


 
Anatoly Podgoretsky ©   (2003-10-28 11:24) [5]

Как что, печатать через систему, для этого есть обширное АПИ и не зачем за этим лезть напрямую в порты, отучайся от дурной привычки работать с аппаратурой напрямую.


 
Digitman ©   (2003-10-28 11:27) [6]

а зачем тебе вообще "адрес" ? вот он тебе дался !)
пусть об этом дядя Билл со своей системой заботится)

открывай файловый поток вызовом

хэндл := CreateFile("LPT1", ....);

и "печатай" на здоровье что угодно и сколько угодно вызовом

результат := WriteFile(хэндл, ...);


 
nollie   (2003-10-28 11:29) [7]

понятно все...
но мне надо именно ассемблер


 
Digitman ©   (2003-10-28 11:30) [8]


> nollie


см.
> Anatoly Podgoretsky © (28.10.03 11:24) [5]


она (привычка) ,может быть, и не столь "дурна", конечно ... но лишь в том случае, если ты разрабатываешь драйвер устройства режима ядра, а не прикладную задачу.. но, думается, тебе до этого как до Китая, и речь об этом в наст.момент вообще не идет


 
Digitman ©   (2003-10-28 11:31) [9]


> но мне надо именно ассемблер


нахрена ? можешь вразумительно объяснить ?


 
nollie   (2003-10-28 11:41) [10]

людям показать надо... исходники


 
Digitman ©   (2003-10-28 11:46) [11]


> nollie


ну так и покажи) ... вот то самое, что здесь ты привел, как раз и покажи) ... но какое отношение это "покажи" имеет к грамотно и корректно организованной тобой логике взаимодействия твоей прикладной программы с системой на базе Win32 ?


 
nollie   (2003-10-28 13:06) [12]

не катит..


 
Anatoly Podgoretsky ©   (2003-10-28 13:14) [13]

nollie (28.10.03 11:29) [7]
Зачем, почему такое требование.

nollie (28.10.03 11:41) [10]
В поставке Дельфи очень много исходников на АСМ можешь смело показывать.


 
Digitman ©   (2003-10-28 13:16) [14]


> не катит..


краткость - сестра таланта))


 
nollie   (2003-10-28 13:21) [15]

что-то типа дипломной работы...
показать надо комисии прогу и исходники и всё доказать


 
Digitman ©   (2003-10-28 13:53) [16]


> показать надо комисии прогу


вот и покажи этот код


> и всё доказать


и докажи , что работать он будет при таких-то условиях

чего уж проще)


 
nollie   (2003-10-28 16:25) [17]

так вот эти условия надо найти


 
Digitman ©   (2003-10-28 16:35) [18]


> nollie


а что их искать-то ?) для Win32 эти условия - в обращении к портам устройства в драйвере режима ядра, а не в прикладной задаче)


 
nollie   (2003-10-28 16:49) [19]

давай разберемся...
если надо показать работу с принтером на низком уровне, при этом предоставить исходники и на пальцах все обяснить....
то ##@%#$ мне api,win32, и работа с драйвером принтера?


 
Digitman ©   (2003-10-28 16:55) [20]


> nollie


да. именно так.
какая разница, КАК ты пошлешь командную секвенцию принтеру - непосредственно в порт или через WinAPI ?

все равно это и есть достаточно "низкий уровень", ибо секвенцию ты генерируешь сам , в соответствии с документацией к принтеру, а как эта секвенция попадет в результате в принтер - мало кому интересно


 
Digitman ©   (2003-10-28 16:59) [21]


> при этом предоставить исходники и на пальцах все обяснить....


тебе придется предоставить исходники не прикладной задачи, а драйвера) ... ты в состоянии написать драйвер да еще на пальцах объяснить, что это, почему и с чем его едят ? Думаю - нет, да и тема работы никак оговаривает такой поворот событий)


 
Digitman ©   (2003-10-28 17:04) [22]

а уж если тема работы оговаривает именно использование asm, то и здесь ты можешь "убить сразу 2-х зайцев" :

- генерировать управляющую секвенцию на asm
- обращаться к WinAPI для передачи в принтер секвенции так же на asm


 
nollie   (2003-10-28 17:09) [23]

дык...
надож показать состояние регистров управления, статуса и даных...
как это показать с АРІ


 
Anatoly Podgoretsky ©   (2003-10-28 17:14) [24]

Это драйвер


 
Anatoly Podgoretsky ©   (2003-10-28 17:14) [25]

Тебе заявили на какиз платформах должно работать


 
nollie   (2003-10-28 17:21) [26]

-> Тебе заявили на какиз платформах должно работать

win98


 
nollie   (2003-10-28 17:25) [27]


asm
MOV DX,0378H
MOV AL,167
OUT DX,AL
end;


тут по сути осталось завершающий символ какой-то внести... это еще 2 строки... по идеи это:
MOV AL,13h
OUT DX,AL
но не работает...

13h - возвращение каретки


 
Anatoly Podgoretsky ©   (2003-10-28 17:25) [28]

То что ты привел будет работать под ДОС, под win98 только в некоторых случаях, делезо это епархия системы и то что тебя не обругают за привилигированные инструкции и даже при наличии данного порта, не означает, что ты сможешь к нему обратиться.
На пользовательском уровне физических портов нет, только виртуальные порты, которыми управляет система


 
nollie   (2003-10-28 17:28) [29]

человек делал всё работало... вот завершающий символ не помнит


 
Digitman ©   (2003-10-28 17:30) [30]


> nollie


что, в задании на проект так и сказано : ОС - Win9x ?

а если нет ? а если демонстрировать свое "творчество" тебе придется под Винтукеем ? Как будешь в глаза комиссии смотреть ? глазками хлопать, не зная что сказать по поводу почему это должно якобы работать везде, а в присутствии комиссии - хоть убей !- не работает ?)


 
N169   (2003-10-28 17:43) [31]

А что требуется? Чтобы печатало, я верно понял?


 
nollie   (2003-10-28 18:15) [32]

-> N169
молодец

-> Digitman
не придется, ближайшый винтук за 200 км


 
Pat ©   (2003-10-28 23:53) [33]

>nollie (28.10.03 18:15) [32]
У комиссии есть нехорошая привычка апгрейдить железо и, соответственно ПО, перед защитой. Вот поставят вам ХРень...и ХРен что у тебя заработает.
Ругайся с руководителем. Пусть либо меняет ОСь на ДОС, либо без низкоуровнего доступа к железу


 
Digitman ©   (2003-10-29 08:18) [34]


> nollie


а принтер-то какой будет ? тоже заранее знаешь ?)


 
nollie   (2003-10-29 09:26) [35]

> Digitman
принтер матричный...

а вот насчет ХеРни всё улажено.... руки у них кивіе таким заниматся...


 
Digitman ©   (2003-10-29 09:51) [36]


> руки у них кивіе


уж не знаю, что у них там "кивое", но не предусмотрев многие нештатные ситуации ты запросто можешь вляпаться с защитой проекта)

даже если условия будут ожидаемыми (т.е. Win9x + матр.принтер на LPT), конкретная конфигурация ОС может подложить тебе баааальшую свинью) ... например, будет стоять резидентный редиректор порта и перенаправлять твою секвенцию черт-те куда, только не в принтер

посему, коль ты такой упрямый, тебе следует перейти на PL0 (благо под маздаем это до смешного просто безо всяких драйверов), определить базовый номер порта (это вполне может быть и не 378h) и уже в Ring0 работать с портами LPT-контроллера обычным образом (т.е. практически так же ,как и в MSDOS)

но здесь тебе грозит другое : придется рассказывать комиссии необходимость и все тонкости перехода в Ring0.. и чем больше у тебя будет пробелов в этих знаниях, тем больше будешь мямлить и тем больше новых вопросов у комиссии будет , мол, а это зачем, а это почему, а это как и для чего)))) ... в общем, врюхаешься по полной программе))


 
Anatoly Podgoretsky ©   (2003-10-29 10:04) [37]

Digitman © (29.10.03 09:51) [36]
И это не однакратно встречалось с драйверами от HP
А насчет работоспособности данный код работоспособен в ДОС и в кольце 0, в остальных случаях только при наличии везения.
Стоит только оказаться в коммисии грамотнуму человеку, как он сразу спросит про адреса портов, про виртуальные порты, про привилигированные инструкции и если увидит хакерский переход в кольцо 0 то и про него. Для начала может спросить как это работает, а потом и про остальное.


 
nollie   (2003-10-29 10:15) [38]

>Digitman

поверь, такой @##$@#$ не будет


 
app ©   (2003-10-29 10:26) [39]

Мат замененый на иероглифы остается матом, у тебя это уже второй случай, в слчае повторения у тебя будет отсутствовать возможность сделать это в дальнейшем.


 
N169   (2003-10-29 10:30) [40]

http://e-dok.narod.ru/delphi/question1/text/text-019.html

http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=7900

http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=14340

http://adam.stup.ac.ru/Developer/ArticleDetail.aspx?ar=2791&l=n&mi=927&mic=932

http://adam.stup.ac.ru/Developer/ArticleDetail.aspx?ar=2705&l=n&mi=926&mic=931


 
nollie   (2003-10-29 10:51) [41]

звыняй... я уже сам в шоке с этим lpt


 
Digitman ©   (2003-10-29 11:15) [42]


> nollie


меняй срочно тему проекта))


 
sadat   (2003-10-29 17:22) [43]

Сам долго работал на асме, так что добавь еще коды 10h 13h - перевод строки и возврат каретки.
И не забудь паузы между байтами - ведь порт 37А ты не обрабатываешь и сигнал /busy тоже?


 
sadat   (2003-10-29 17:23) [44]

Сам долго работал на асме, так что добавь еще коды 10h 13h - перевод строки и возврат каретки.
И не забудь паузы между байтами - ведь порт 37А ты не обрабатываешь и сигнал /busy тоже?


 
Digitman ©   (2003-10-29 17:28) [45]


> sadat


верное, кстати, замечание !
готовность порта нужно проверять, коль не используется асинхр.режим с обработкой прерываний


 
Falcon   (2003-10-30 10:27) [46]

Да отвяжись ты от этого асма! Тебя интересует мнение комиссии?
Если ты аргументировано докажешь необходимость применения API и с умом поспоришь с ними, это произведет намного более благоприятное впечетление на них, нежели ты будешь мямлить "а вот тут в задании было...". Диплом для того и диплом чтобы доказать, что ты мыслить умеешь.

З.Ы. А что комисси в голову взбредет, никто знать не может, поэтому ты подумай насчет ХР и прочей требухи.


 
nollie   (2003-10-30 11:45) [47]

> всем
оборудование полностб свое... а на ХР меня не потянет точно...

ассемблер всеже надо.... АРІ для них отстой, бо они его не знают... а ассемблер - это сила... и тут им ничего не докажешь.

кстати как сделать задержку?


 
Digitman ©   (2003-10-30 12:17) [48]


> как сделать задержку


не нужно ее делать
некорректно это и неверно концептуально
если не изменяет память, старший бит значения, читаемого из порта состояния, отражает состояние порта данных - готовность или неготовность порта данных к записи в него очередных данных

если не используешь прерывания, в цикле опрашивай состояние этого бита и не пытайся ничего писать в порт данных до тех пор пока состояние этого бита, проверяемое в цикле, не укажет тебе на готовность порта к передаче



Страницы: 1 2 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.025 c
4-37983
Felixx
2003-11-07 13:30
2004.01.13
Узнать путь к приложению, которое активно в данный момент


1-37796
Ygy
2003-12-28 22:48
2004.01.13
Подправить DLL ку


1-37643
KIE
2003-12-22 14:01
2004.01.13
Массивы.


9-37491
Mihey
2003-06-26 00:04
2004.01.13
Нужен collision check


9-37482
15teen
2003-06-30 00:04
2004.01.13
Алгоритм для игры пятнашки