Предыдущая глава | ПРОСТЫЕ ПРОГРАММЫ НА АССЕМБЛЕРЕ | Следующий раздел |
Существуют несколько языков ассемблера (и соответствующих трансляторов), ориентированных на получение машинных программ для Intel-процессоров. Из них нами выбран язык ассемблера и одноименный транслятор NASM.
Основным отличием программы на любом языке ассемблера от соответствующей машинной программы, которую мы вводим в ЭВМ с помощью Debug, является наличие псевдооператоров. В отличие от исполнительного оператора, который преобразуется транслятором-ассемблером в одну машинную команду, псевдооператор ни в какие машинные команды не транслируется. Такой оператор представляет собой указание транслятору и нигде, кроме самого транслятора, не используется.
Общая структура простых ассемблерных программ, которая будет для нас достаточна на ближайшее время, имеет вид
[org 100h]
. . . . . . . . .
int 20h
Посмотрим внимательно на данную структуру. По горизонтали она разделена на две части. Левая (пока пустая) часть предназначена для записи идентификаторов (меток) программных объектов, к которым относятся сегменты, процедуры, исполнительные операторы и элементы данных. В правой части листинга находятся псевдооператоры и исполнительные операторы, а также операнды этих операторов. Идентификатор отделяется от соответствующего оператора минимум одним пробелом.
Простейшая программа состоит всего из одного сегмента кодов, в котором находятся команды программы. При этом псевдооператор “org l00h” сообщает транслятору о том, что самый первый исполнительный оператор нашей программы должен быть помещен в выделенный программе сегмент ОП со смещением l00h относительно начала сегмента. Мы и раньше использовали это смещение, вводя машинные программы с помощью Debug. Следует обратить внимание на символ h после шестнадцатеричного числа 100. Использование этого символа после шестнадцатеричных чисел обязательно. Так как транслятор-ассемблер в отличие от Debug "обычной" считает не шестнадцатеричную, а десятичную систему счисления.
В конце программы будем помещать хорошо знакомый нам исполнительный оператор “int 20h”, выполняющий возврат из программы туда, откуда она была запущена.
Предыдущая глава | В начало | Следующий раздел |