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

Вниз

Int 21h в Delphi   Найти похожие ветки 

 
Top Gun   (2003-04-08 18:48) [0]

Вот узнал тут, что в дельфе между asm и end; можно вставить ассемблерные комманды

Но никак не могу разобраться. А вот можно вызвать int21h, например, для вывода строки ? И если можно - покажите как


 
MityaP ©   (2003-04-08 19:17) [1]

С int21h у тебя в NT будет проблеба - тебе не даст она такого сделать...
Где-то на форумах я видел, но ща уже не помню ссылку...


 
Palladin ©   (2003-04-08 19:28) [2]

вот здесь наверно...
здесь собраны самые великолепные вопросы..
что то вроде доски почета..

http://delphi.mastak.ru/nuts/nuts.html


 
Top Gun   (2003-04-08 20:58) [3]

Palladin, да, да, очень смешно.

Ну может int21 и нельзя непосредственно вызвать, но я слышал, что NT что-то там эмулирует... В общем, что хочу сказать. Если на TASM написать обычный Hello, World, где для вывода использовать int21, то скомпилированный exe в 2000 работает на ура. Так вот, хочу тоже самое проделать и в Delphi. Только не понимаю как


 
Palladin ©   (2003-04-08 21:40) [4]

ты знаешь что такое int 21h?

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

теперь понимаешь шутку юмора?

у тебя вдруг наверно возникнет вопрос да? почему же скомпилированое TASM работает?

ну батенька... скомпилированое TASM это является COM чисто DOSовская весч, которая в принципе не может занимать более 64кб

соотвессно COM исполняется под VM, то бишь Virtual Machine (помоему так пишется)...

слышал... уши свои пожалуйста фильтруй...


ЗЫ Моему возмущенью нет предела...


 
evvcom ©   (2003-04-09 09:26) [5]

Palladin грубит, но он прав.
Зачем под Win вызывать DOS-прерывания? Для выполнения тех задач, которые исполняли функции DOS-прерываний, написан WinAPI с теми же и даже более широкими возможностями. Используйте их.


 
Palladin ©   (2003-04-09 09:55) [6]

извиняюсь за грубость


 
Top Gun   (2003-04-09 18:30) [7]

Palladin, я прекрасно осведомлен, что такое int21.

Не понимаю, почему ты вообще завел тему о ".com" файлах. Я то в ".exe" компилирую

Я не говорю, что это очень необходимо - вызвать под win int21, я просто спрашиваю можно ли это сделать ? Если можно - подскажите как, дальше уж буду думать


 
Palladin ©   (2003-04-09 18:44) [8]

какая разница, ну предположим компильнул ты в exe
exe получился не PE а MZ, и исполнился в той же самой VM поэтому int отработал...

Delphi собирает PE файлы, и исполняются они не под VM, в VM int 21h эмулируется...

ну нету int21h в windows как ты не понял до сих пор...


 
Palladin ©   (2003-04-09 18:53) [9]

хотя за 9x с полной увереностью сказать немогу


 
Top Gun   (2003-04-09 18:55) [10]

Palladin, вот так намного понятнее, и не надо возмущаться. Я слышал, что эмулируется что-то - и ведь действительно эмулируется...

А тогда как дело обстоит с прерываниями BIOS, например? Их то наверняка можно вызвать, ведь сама windows их вызывает, думаю (как же без этого?). Можно пример вызова такого прерывания?


 
Palladin ©   (2003-04-09 19:08) [11]

нет
windows не вызывает прерывания bios,

их вызывает драйвер видеокарты...


 
Palladin ©   (2003-04-09 19:09) [12]

если конечно он вообще их вызывает а не работает на прямую с контроллером...


 
Cobalt ©   (2003-04-09 19:19) [13]

2 Top Gun
>ведь сама windows их вызывает,
Сама вызывает, а другим не дает. Принцип "разделяй и властвуй" - нефига лезть своими пальцами в сердце системы. Только сертефицированным драйверам. (это, как правило - в линейке NT, а вот у 9Х - там похуже, программа может "просто" зависнуть, или "просто" подвесить систему)


 
Palladin ©   (2003-04-09 19:29) [14]

откуда такое стремление вызвать какое нибудь прерывание в windows?


 
NA   (2003-04-09 19:37) [15]

:)))) веселая темка ;)


Вообще я не готов говорить на все 100%, но имхо даже в биос под виндой пробиться сложновато, скорее всего программа будет работать с мулькой, любезно предложенной виндой вместо биоса настоящего. Поправьте, если ошибаюсь.


Эмулируется в DOS-окнах, да. Может, даже в консольном приложении что-то такое прокатит с теи или иными ограничениями, НО - ЗАЧЕМ???


 
Top Gun   (2003-04-09 19:44) [16]

Palladin, а как это можно работать с утройством еще более "прямо", чем вызывать прерывания ?

Могу объяснить зачем. Но это долго. Вы скажите, ЗНАЧИТ, НЕЛЬЗЯ ВЫЗЫВАТЬ ПРЕРЫВАНИЯ В DELPHI ? ТАк или не тАК ? Кто этим занимался, расскажите!


 
Palladin ©   (2003-04-09 20:20) [17]

прерывания это вовсе не "прямая" работа с устройствами...
прямая это чтение/запись портов для этих устройств...

в Delphi ты ничего не вызовешь, у него нет такого оператора.


 
Top Gun   (2003-04-09 21:50) [18]

>прямая это чтение/запись портов для этих устройств...

А можно продемонстрировать, это как ? Как это можно писать в порт устройства CD-ROM ?


 
Palladin ©   (2003-04-09 22:17) [19]


> Top Gun (09.04.03 21:50)

:))

демонстрирую (если цифрой не ошибся, да простят меня хорошопомнящие)

port[$60] - младшие 7 битов код нажатой клавиши на клавиатуре если старший бит равен 1 то эта клавиша была только что отпущена...
это все что я помню из bp7/tp7 по поводу портов...

а что по поводу windows, имхо, к портам таким образом тебе обратится не дано. Нельзя.

ЗЫ что то жутко сомневаюсь по поводу $60...



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

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

Наверх




Память: 0.51 MB
Время: 0.03 c
1-67266
Crush_FM
2003-04-11 13:44
2003.04.21
Компоненты


14-67463
kofman
2003-04-03 21:42
2003.04.21
Помогите с AdWare-проектом


14-67564
Евгения
2003-04-04 21:48
2003.04.21
Описание проекта??!!??


1-67267
$Hic0
2003-04-11 12:19
2003.04.21
byte2bin


4-67634
Subdigger
2003-02-21 11:17
2003.04.21
Chart