Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Директивы ассемблера

Читайте также:
  1. Директивы
  2. Директивы using и пространства имен
  3. Директивы ЕС об эргономических требованиях
  4. Директивы общего назначения
  5. ДИРЕКТИВЫ ЯЗЫКА
  6. Зачем нужен язык ассемблера?
  7. Команды ассемблера. назначение и примеры команды передачи данных, арифметических, логических команд и сдвигов. Команды передачи управления.
  8. Команды ассемблера. Цепочные команды и префиксы, команды ввода вывода команды управления МП.
  9. Приложение 1. Система команд ассемблера HCS08

Директивой называется команда транслятору для выполнения определённых данной директивой действий, сама директива в текст транслированной программы не включается.

1. Директива задания исходных данных:

 

[<имя>] d <тип> <константа>[,<константа>, <константа>,...]

· <имя> - имя массива данных, по которому к ним можно обратиться из команды;

· d (define)– определяет начало массива данных;

· <тип> - размер констант, входящих в массив:

 

b байт,
w Слово (два байта),
d двойное слово,
q учетверённое слово,
t десять байтов;

 

· <константа> - числовой или символьный элемент массива дан­ных.

В ассемблере используется несколько типов констант:

десятичные – последовательность цифр от 0 до 9;

шестнадцатеричные – последовательность шестнадцатеричных цифр от 0 до 9 и от А или а до F или f завершающаяся буквой H или h, первой должна быть десятичная цифра или 0;

восьмеричные – последовательность цифр от 0 до 7, завершающаяся буквами Q или q;

двоичные – последовательность цифр от 0 до 1, завершающаяся буквой B или b;

символьные – символ или группа символов, заключённые в кавычки;

знак? – используется для резервирования места для данных.

Например,

data1 db 123, 0a2h, 75q, 110011b, 'a', 'пример',?,?

Для заполнения больших массивов используется директива dup (duplicate):

<число повторений> dup(<образец>)

<число повторений> - задаёт количество размещаемых в памяти данных, определяемых образцом;

<образец> - любая допустимая группа констант.

Например,

data2 db 23 dup(1, 2, 'x')

выделяет в памяти 23 · 3=69 байтов и заносит в них образец 1, 2, 'x', 1, 2, 'x', ….

2. Директива использования сегментных регистров по умолчанию:

assume <имя сегментного регистра>: <имя сегмента или nothing >[, <имя сегментного регистра>: <имя сегмента или nothing >, …]

Как отмечалось выше, для задания адреса в памяти требуется два регистра, один из них всегда сегментный, поэтому в команде при обращении к памяти приходится набирать имя сегментного регистра, часто одного и того же. Директива assume позволяет избежать этого. Транслятор сопоставляет имя массива данных и автоматически подставляет сегментный регистр, заданный для сегмента, в котором расположен данный массив. Слово nothing показывает, что данный сегментный регистр не адресуется по умолчанию. Директива assume может использоваться в программе при каждом изменении сегмента для данного сегментного регистра, но обязательно в начале сегмента, где она задаёт по умолчанию сегментный регистр для сегмента кодов.

Например,

assume cs:code, ds:data1, es:nothing

Здесь code и data1 – имена сегментов кодов и данных, соответственно.




Дата добавления: 2014-12-19; просмотров: 105 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав