Предыдущая глава ПРОСТЫЕ ПРОГРАММЫ НА АССЕМБЛЕРЕ Следующий раздел

10.1. Общая структура простых ассемблерных программ

Существуют несколько языков ассемблера (и соответствующих трансляторов), ориентированных на получение машинных программ для Intel-процессоров. Из них нами выбран язык ассемблера и одноименный транслятор NASM.

Основным отличием программы на любом языке ассемблера от соответствующей машинной программы, которую мы вводим в ЭВМ с помощью Debug, является наличие псевдооператоров. В отличие от исполнительного оператора, который преобразуется транслятором-ассемблером в одну машинную команду, псевдооператор ни в какие машинные команды не транслируется. Такой оператор представляет собой указание транслятору и нигде, кроме самого транслятора, не используется.

Общая структура простых ассемблерных программ, которая будет для нас достаточна на ближайшее время, имеет вид

 

[org 100h]

. . . . . . . . .                             

int     20h

 

  Посмотрим внимательно на данную структуру. По горизонтали она разделена на две части. Левая (пока пустая) часть предназначена для записи идентификаторов (меток) программных объектов, к которым относятся сегменты, процедуры, исполнительные операторы и элементы данных. В правой части листинга находятся псевдооператоры и исполнительные операторы, а также операнды этих операторов. Идентификатор отделяется от соответствующего оператора минимум одним пробелом.                     

Простейшая программа состоит всего из одного сегмента кодов, в котором находятся команды программы. При этом псевдооператор “org l00h”  сообщает транслятору о том, что самый первый исполнительный оператор нашей программы должен быть помещен в выделенный программе сегмент ОП со смещением l00h относительно начала сегмента. Мы и раньше использовали это смещение, вводя машинные программы с помощью Debug. Следует обратить внимание на символ h после шестнадцатеричного числа 100. Использование этого символа после шестнадцатеричных чисел обязательно. Так как транслятор-ассемблер в отличие от Debug "обычной" считает не шестнадцатеричную, а десятичную систему счисления.

В конце программы будем помещать хорошо знакомый нам исполнительный оператор  “int 20h”, выполняющий возврат из программы туда, откуда она была запущена.

 


Предыдущая глава В начало Следующий раздел