Именованные

Описываются с помощью директивы экви­валентности EQU, имеющей следующий синтаксис:

<имя> EQU <операнд>

Здесь обязательно должно быть указано имя и только один операнд. Директивой EQU автор программы заявляет, что указанному операнду он дает указанное имя, и требует, чтобы все вхождения этого имени в текст программы на этапе трансляции ассемблер заменял на этот операнд. Директиву EQU можно ставить в любое место программы.

Пример:

const1 EQU 10h

сonst2 EQU 1+1

Директива ASSUME

С помощью директивы ASSUME ассемблеру сообщается информация о соответствии между сегментными регистрами, и программными сегментами. Директива имеет следующий формат:

ASSUME <сегментный регистр>:<имя сегмента>

Например, директива ASSUME ES:A, DS:B, CS:Cсообщает ассемблеру, что для сегментирования адресов из сегмента А выбирается регистр ES, для адресов из сегмента В – регистр DS, а для адресов из сегмента С – регистр CS.

Директива ASSUME не загружает в сегментные ре­гистры начальные адреса сегментов. Этой директивой автор программы лишь сообщает, что в прог­рамме будет сделана такая, загрузка. Директиву ASSUME можно размешать в любом месте программы, но обычно ее указывают в начале сегмента команд, так как информация из нее нужна только при трансляции инструкций.

ASSUME ES: NOTHING – это означает, что с данного момента сегментный регистр не указывает ни на какой сегмент.

Загрузка производится следующим образом. Пусть регистр DS необходимо установить на начало сегмента В. Для загрузки регистра необходимо выполнить присваивание вида DS:=B. Однако сделать это командой MOV DS,Bнельзя, поскольку имя сегмента – это константное выражение, т. е. непосредственный операнд, а по команде MOV запрещена пересылка непосредственного операнда в сегментный регистр. Поэтому такую пересылку следует делать через другой, несегментный регистр, например, через АХ:

MOV АХ,В

MOV DS,AX;DS:=B

Команда MOV - пересылка

Команда ассемблера MOV приемник,источник - пересылает данные из источника в приемник. Источником и приемником могут быть регистр, переменные в памяти, непосредственное значение. Необходимо помнить:

– размер данных источника и приемника должен быть одинаковый;

– нельзя пересылать данные из памяти в память и из памяти в сегментный регистр, а также наоборот (только через регистр данных).

Пример

MOV Data,DI

MOV BX,CL; Ошибка! НЕ СОВПАДАЮТ РАЗМЕРНОСТИ

MOV DI,Index

MOV Start_Seg,DS

MOV DS,Buffer; Ошибка! СЕГМЕНТНЫЙ РЕГИСТР

MOV Days,356

MOV DI,0

Завершить программу можно через функцию 4CH (EXIT) прерывания 21H в любой момент, независимо от значений регистров.

Чтобы программа выполнилась любой ОС, она должна быть скомпилирована в исполнимый файл. Основные два формата исполнимых файлов в DOS — СОМ и ЕХЕ. Файлы типа СОМ содержат только скомпилированный код без какой-либо дополнительной информации о программе. Весь код, данные и стек такой программы располагаются в одном сегменте и не могут превышать 64 килобайта.

2. Структура.ЕХЕ программ


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: