![]() |
На чём написаны .COM проги
Я вот и гуглил и спрашивал в оцеке, никто незнает, кабута .COM вобще не существует =\
Мне Hello world написать надо :rolleyes: сабж, на чём? ==== Вот блин будиш будиш всех, спят! А как токо создаёш тему прибегают поржать =\ Мне уже визард спалил тему, не зажал :D ==== Нифига он не смог написать, я тож ничерта неумею, проснусь вечером 10 рублёв дам тому кто мне hello world напишет, но тама с 1 условием, вечером уже отпишу :) |
на любом языке на котором можно создать прогу для dos'a
|
Код:
org 100h |
TASM
Рассмотрим пример программы типа com.
Пример: Код:
; hello.asm tasm hello.asm Затем с помощью компоновщика превратить объектный файл в исполняемый: tlink /t /x hello.obj В результате появился исполняемый com-файл. Если его выполнить, на экране появится строка Hello World. Первая строка определяет модель памяти TINY, в которой сегменты кода, данных и стека объединены. Эта модель предназначена для создания файлов типа com. Директива .CODE начинает сегмент кода, который в нашем случае также должен содержать и данные. ORG 100h устанавливает значение программного счетчика в 100h, потому что при загрузке com-файла в память DOS занимает первые 256 байт (100h) блоком данных PSP и располагает код программы только после этого блока. Все программы, которые компилируются в файлы типа com, должны начинаться с этой директивы. Метка START располагается перед первой командой в программе и будет использоваться в директиве END, чтобы указать, с какой команды начинается программа. Команда MOV АН,9 помещает число 9 в регистр АН - номер функции DOS "вывод строки". Команда MOV DX,OFFSET MESSAGE помещает в регистр DX смещение метки MESSAGE относительно начала сегмента данных, который совпадает с сегментом кода. Команда INT 21h вызывает системную функцию DOS. Эта команда - основное средство взаимодействия программ с операционной системой. В нашем примере вызывается функция DOS номер 9 - вывести строку на экран. Эта функция выводит строку от начала, адрес которого задается в регистрах DS:DX, до первого встреченного символа $. При запуске com-файла регистр DS автоматически загружается сегментным адресом программы, а регистр DX был подготовлен предыдущей командой. Команда RET используется обычно для возвращения из процедуры. DOS вызывает com-программы так, что команда RET корректно завершает программу. DOS при вызове com-файла помещает в стек сегментный адрес программы НОЛЬ, так что RET передает управление на нулевой адрес текущего сегмента, то есть на первый байт PSP (префикс программного сегмента, с ним мы познакомимся немного позднее). Там находится код команды INT20h, которая и используется для возвращения управления в DOS. Можно сразу заканчивать программу командой INT20h. Следующая строка программы HELLO.ASM определяет строку данных, содержащую текст Hello World, управляющий символ ASCII возврат каретки с кодом 0Dh, управляющий символ ASCII перевод строки с кодом 0Ah и символ $, завершающий строку. Директива END завершает программу, одновременно указывая, с какой метки должно начинаться ее выполнение. После загрузки двоичного образа COM-программы:
З.Ы: Медведев В.А. © 2005 г. OSU |
fasm, tasm...
В WinXP открываешь консоль и делаешь примерно так: http://i062.radikal.ru/0908/62/d393da117b56.png |
лол
>>Нифига он не смог написать ты словами аккуратнее кидайся, я тебе написал. |
виз, хелло ворлд 3КБ это не серьёзно =\
Насчёт проги щас по личкам побегаю === Всё, не актуально :) |
Ponchik заврался
не больше 21 байта было |
| Время: 18:43 |