Interested Article - .COM
- 2020-09-29
- 1
.COM ( англ. command ) — расширение файла , использовалось в некоторых операционных системах в различных целях.
Структура
В системах DOS и в 8-битной CP/M -80 COM-файл — простой тип исполняемого файла . Файла начинается с адреса 100h. В CP/M-80 может занимать адреса до верней границы TPA. В DOS и CP/m-86 при выполнении файла код, данные и стек находятся в одном и том же 16-битном сегменте . Поэтому размер файла не может превышать 65280 байт (что на 256 байт меньше размера сегмента — 2 16 байт ). COM-файлы для DOS можно выполнять в некоторых версиях Windows , OS/2 , а также на эмуляторах .
Кроме COM-файлов DOS поддерживает файлы в формате EXE , обладающие более сложной структурой. Тип файла определяется при запуске автоматически (в формате EXE в начале файла имеется специальная сигнатура), независимо от расширения. В CP/M-86 поддерживается файл формата .
Примеры
Пример простой программы в формате .COM (для ассемблера FASM ):
use16 ;Генерировать 16-битный код
org 100h ;Программа начинается с адреса 100h
mov dx, hello ;В DX адрес строки.
mov ah, 9 ;Номер функции DOS.
int 21h ;Обращение к функции DOS.
mov ax, 4C00h ;В регистр AH помещаем 4Ch, в AL – 00h.
int 21h ;Завершение программы
;-------------------------------------------------------
hello db 'Hello, world!$'
Директива «use 16» указывает
ассемблеру
, что нужно генерировать 16-битный код.
Директива «org 100h» означает, что первая команда будет находиться по адресу 100h, а первые 256 байт (адреса 0000h – 00FFh) нужно пропустить (в этих адресах
операционная система
размещает префикс программного сегмента,
PSP
).
Далее идут команды.
Первой командой в регистр DX помещается адрес строки hello.
Затем вызывается
прерывание DOS
int 21h с функцией 9, которая выводит строку на экран.
При помощи функции 4Ch того же прерывания программа завершает работу (хотя здесь можно использовать и просто команду
ret
).
Строка hello завершается символом ‘$’, который на экран не выводится, а сигнализирует конец строки для функции 9 прерывания int 21h
.
Совместимость
Программы формата .COM не поддерживаются 64-разрядными верcиями Windows . В таком случае, для их запуска можно использовать эмулятор DOS, например DOSBox .
Работа с памятью
.COM — один из простейших форматов исполняемых файлов для процессоров семейства 8080 и x86 . Программа, загруженная в память для исполнения, является точной копией файла на диске .
Запуск COM-программы в MS-DOS происходит следующим образом :
- Система выделяет свободный сегмент памяти и заносит его адрес во все сегментные регистры (CS, DS, ES и SS).
- В первые 256 байт этого сегмента записывается PSP .
- Непосредственно за ним загружается содержимое COM-файла без изменений.
- Указатель стека (регистр SP) устанавливается на конец сегмента.
- В стек записывается 0000h (адрес возврата для команды ret).
- Управление передаётся по адресу CS:0100h, где находится первый байт исполняемого файла.
Модель памяти, используемую COM-программами, когда код программы, все её данные, PSP и стек расположены в одном сегменте, компиляторы высокоуровневых языков называют TINY ( англ. tiny — крохотная).
Использование
COM-программы обычно являются небольшими приложениями, системными утилитами или небольшими резидентными программами .
Примечания
- — 2019.
- ↑ . из оригинала 17 сентября 2018 . Дата обращения: 17 сентября 2018 .
- Фролов А., Фролов Г. MS-DOS для программиста. — М. , 1995. — Т. 18.
- Банк лекций Siblec.ru - Электронная техника, радиотехника и связь. Формальные, технические, естественные, общественные, гуманитарные, и другие науки. . siblec.ru. Дата обращения: 17 сентября 2018. 17 сентября 2018 года.
- 2020-09-29
- 1