Форум: "Потрепаться";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
ВнизКросплатформенность... ;-) Найти похожие ветки
← →
Nick Denry (2003-11-01 13:14) [0]Всем привет!
Не совсем так, но все - же об этом. Точнее DOS-WINDOWS (!)платформенное....
компоновка РE-файла, насколько я знаю выглядит так:
DOS MZ-заголовок
DOS stub
Заголовок РE
Таблица секций
Секция 1
Секция 2
Секция ...
Секция n
Вопрос - возможно ли на дельфи (если нет, то на чем возможно написать кросс-платформенное (!)) приложение, как например выглядит scandisk в виндовс 98.... , т.е. и под дос и под виндовс...
из (С) Iczelion
Вышеприведенная таблица представляет собой общую струтуру РE-файла. Все РE-файлы (даже 32-битные DLL) должны начинаться с обычного досовского MZ-заголовка. Обычно он нам не очень интересен, так как нужен лишь для того, чтобы если программа будет вдруг запущена из-под DOS"а, он мог распознать ее как исполняемый файл и мог запустить DOS-stub, который находится за MZ-заголовком. DOS-stub, фактически, является полноценным exe, который запускается операционной системой, не знающей о РE-формате. Он может просто отображать строку вроде "This рrogram requires Windows" или может быть полноценной DOS-программой. Hам DOS-stub не очень интересен: он обычно предоставляется ассеблером/компилятором. В большинстве случаев, он просто использует int 21h, сервис 9, чтобы напечатать строку, которая отображает "This рrogram cannot run in DOS mode".
Так думаю понятнее. И еще :
из-под доса можно перезагрузить комп :
Program restart;
- это на турбо паскеле - встроенный АСМ - тоже самое работает и в TASM.
Begin
asm
mov ax,$f000;
push ax;
mov ax,$fff0;
push ax;
retf;
end;
end.
Вопрос №2 - как выключить компьютер из-под ДОС"a?
С уважением, Nick Denry
← →
Ketmar (2003-11-01 14:04) [1]для объёдинения PE и DOS-EXE нужна отдельная софтина. дельфи тут совершенно не при чём.
для выключения -- воспользоваться APM в биосе.
← →
SPeller (2003-11-01 14:07) [2]
> возможно ли на дельфи
Вряд ли.
> то на чем возможно написать кросс-платформенное (!)) приложение
В вашей интерпретации кроссплатформенности - наверное на каком-нибудь СИ, мелкософт ведь написал. Точно не знаю, но могу предположить, что всё это делалось из-под какого-то ассемблера, который особым образом линковал 16 и 32-разрядные какие-нибудь объектные файлы.
← →
Nick Denry (2003-11-01 14:17) [3]Можно подробнее?
← →
Ketmar (2003-11-01 14:19) [4]>SPeller
не надо дезинформации. всё проще: пишем на дельфи одно. пишем на любом дос-компилере другое. потом спецутилитой (входит в поставку мсвц, или пишется за 10 мин) "соединяем" два файла. всё. более ничего сложного нет.
← →
Nick Denry (2003-11-01 16:21) [5]2>[4](входит в поставку мсвц, или пишется за 10 мин)?
1. Входит в поставку чего?
2. Пишется как?
3. Две программы есть....
4. Пожалуйста подробнее... если можно
← →
Nick Denry (2003-11-01 19:47) [6][C] Svet(R)off
Важно! При компоновке stub-программы в командной строке компоновщика укажите недокументированную и загадочно звучащую опцию /KNOWEAS. Это опция вносит некие изменения в заголовок exe-файла. Если опцию не указать, то компоновка Windows-приложения со stub-программой окажется некорректна, о чем вы получите соответствующее предупреждение от линкера.
Подозреваем, что не все компоновщики поддерживают эту опцию. Однако link.exe из состава MS Developer Studio, конечно же, поддерживает.
Написанную stub-программу используйте на этапе компоновки своего Windows-приложения. Для этого в командную строку компоновщика добавьте опцию /STUB:"filename.exe", где filename.exe, как вы можете догадаться - это имя вашей stub-программы, при необходимости с путем. Обнаружив эту опцию, компоновщик заменит стандартную stub-программу на вашу.
Возможно ли в Delphi что то подобное?
← →
Nick Denry (2003-11-01 20:30) [7]И еще про перезагруку UP
← →
Nick Denry (2003-11-02 12:15) [8]UP if Available (jnz)
← →
app (2003-11-02 12:18) [9]Кончай делать UP, может быть down, противоречие правилам - создание пустых сообщений
← →
Nick Denry (2003-11-02 12:20) [10]Понял.Извиняюсь.Больше_не_буду;
:)
← →
Opuhshii (2003-11-02 13:12) [11]линкер дельфи подобным не занимается,
но это можешь сделать сам читай спецификацию PE....
http://vh224401.truman.edu/%7edbindner/freeware/index.html#power
пример работы с APM BIOS,....
← →
Nick Denry (2003-11-02 15:31) [12]Про выключение питания нашел на Delphi world:
mov ax,5301h
sub bx,bx
int 15h
jb stop
mov ax,530eh
sub bx,bx
int 15h
jb stop
mov ax,5307h
mov bx,0001h
mov cx,0003h
int 15h
stop: int 20h
или
mov ax,5301h
sub bx,bx
int 15h
jc @@finish
mov ax,530Eh
sub bx,bx
mov cx,102h
int 15h
jc @@finish
mov ax,5307h
mov bx,1
mov cx,3
int 15h
@@finish:
int 20h
Вот-так. Так что с этим пока отбой, хотя за ссылки спасибо.
А с ДОС стабом - переписал вин прогу на МАСМе - теперь пишу ДОСовскюу часть на ТАСМе.
ПВозник вопрос по ходу ДОСовской части - вывод сообщения - 21h, а как сменить цвет текста на зеленый?
С уважением, Nick D.
← →
DiamondShark (2003-11-02 16:33) [13]
> а как сменить цвет текста на зеленый?
Видеофункции -- int 10h
← →
Nick Denry (2003-11-02 18:00) [14]А нет ли справочника по функциям (прерываниям) ДОС/БИОС или учебника по АСМу для ДОС (желат. ТАСМ) в электронном виде у кого?
← →
Anatoly Podgoretsky (2003-11-02 18:11) [15]Книг по прерывания очень много, кто то специально ведет список этих прерываний, фамилию забыд, так бы можно было найти в Сети, кроме этого есть электронные справочник Norton Guide, TechHelp и жругие.
Книги по ТАСМ есть на поем сайте. Там же и другие.
← →
Nick Denry (2003-11-02 18:32) [16]2>Anatoly Podgoretsky ©
Спасибо огромное. Повторюсь, но http://www.podgoretsky.com - весьма интересный ресурс...
← →
Nick Denry (2003-11-03 18:50) [17]Готово, правда все-таки без зеленого текста....
← →
Pat (2003-11-03 20:52) [18]>Готово, правда все-таки без зеленого текста....
Ну расскажи хоть, как сделал
← →
Nick Denry (2003-11-04 13:55) [19]Рассказываю:
- Сидели они однажды тихим осенним вечерком у камина и линковали, линковали......
Часть МАСМ (выключение):
.486
.model flat, stdcall
option casemap : none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\advapi32.lib
;WinMain proto
WriteLN macro
invoke lstrlen, addr en ;
← →
Nick Denry (2003-11-04 13:57) [20]Часть ТАСМ (Выключение):
masm
model small
.code
main proc
mov ax,5301h
sub bx,bx
int 15h
jc @@finish
mov ax,530Eh
sub bx,bx
mov cx,102h
int 15h
jc @@finish
mov ax,5307h
mov bx,1
mov cx,3
int 15h
@@finish:
int 20h
main endp
end main
← →
Nick Denry (2003-11-04 13:58) [21]Как линковали:
d:
cd \
cd masm32
cd bin
@Echo Press a key to build restart.exe
pause
link /subsystem:windows /libpath:d:\masm32\lib /knoweas /stub:D:\Programs\Borland\Delphi7\Projects\ASM\offer\offdos.exe D:\Programs\Borland\Delphi7\Projects\ASM\offer\poweroff.obj D:\Programs\Borland\Delphi7\Projects\ASM\offer\1.obj
pause
copy d:\masm32\bin\poweroff.exe D:\Programs\Borland\Delphi7\Projects\ASM\offer\poweroff.exe
del d:\masm32\bin\poweroff.exe
@echo restart.exe complite
← →
Nick Denry (2003-11-04 13:59) [22]Аналолгично сделан restart.exe
← →
Nick Denry (2003-11-04 14:06) [23]Да еще : размер ккаждого екзешника 4,5 кБ!!!
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c