ORG 100h

Если вы начинаете изучать язык ассемблера, то у вас наверняка сразу появляется куча вопросов, найти ответ на которые бывает на так просто (кстати, на некоторые вопросы вы найдёте ответы в подборке статей по ассемблеру этого канала).

Лично меня когда-то сильно мучал вопрос - зачем в начале некоторых программ на ассемблере записывается строка:

ORG 100h

Попробую сегодня ответить, не вдаваясь в излишние подробности…

Начну с того, что это не команда процессора, а оператор (иногда это называют директивой), который даёт некие указания ассемблеру (какие - чуть позже).

С этого оператора начинается программа типа СОМ (то есть исполняемый файл такой программы в DOS/Windows имеет расширение .СОМ, а не .ЕХЕ).

Этот оператор указывает ассемблеру, что код нашей программы должен загружаться не с самого начала сегмента, а со смещения 100h. Напомню, что ассемблер - это программа (точнее, обычно это несколько программ), которая преобразует код на ЯЗЫКЕ ассемблера в машинные коды, то есть в исполняемый файл.

Но почему именно 100h?

Напомню, что 100h в десятичной системе - это 256. То есть код программы загружается в 257-ю ячейку памяти относительно начала сегмента (нумерация начинается с 0, поэтому в 257-ю). Можно догадаться, что для программ типа СОМ в начале сегмента резервируется 256 байт для каких-то целей. И эта догадка верная.

В памяти программы с диапазоном адресов 0…255 (256 байт) относительно начала сегмента, выделенного для программы типа СОМ, находится так называемый PSP - Program Segment Prefix - Префикс Программного Сегмента. Этот блок памяти автоматически создаётся операционной системой после загрузки программы в память, но до того, как операционная система передаст программе управление.

По адресу 80h по умолчанию находится DTA - Disk Transfer Area - Область Обмена Дисковыми Данными. И при запуске программы здесь и далее находится командная строка (как-нибудь напишу об этом отдельно). Ну а вообще в DOS блок PSP содержит следующее:

Если вы начинаете изучать язык ассемблера, то у вас наверняка сразу появляется куча вопросов, найти ответ на которые бывает на так просто (кстати, на некоторые вопросы вы найдёте ответы в подборке...

На этом пока всё. Самые любопытные могут покопаться в документации и литературе. Я, возможно, тоже ещё вернусь к этому вопросу. Так что подписывайтесь на канал, чтобы ничего не пропустить.