Общий формат ассемблерной команды — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Общий формат ассемблерной команды

2022-11-24 19
Общий формат ассемблерной команды 0.00 из 5.00 0 оценок
Заказать работу

Каждая ассемблерная команда состоит из двух частей: операционной (мнемоника), определяющей «что делать», и адресной (операндной), определяющей «с чем делать».

В самом общем виде команда на языке ассемблера в форме Бэкуса-Наура выглядит следующим образом (в квадратных скобках указаны необязательные компоненты) [14, 16]:

[ Метка: ] Мнемоника [ Операнды ] [; Комментарий ]

Метка (символьный адрес команды в сегменте кода) представляет собой идентификатор, то есть последовательность букв и цифр, начинающуюся с буквы. При этом используются буквы латинского алфавита и цифры в диапазоне от 0 до 9. Символы метки могут разделяться знаком подчеркивания.

Все имена регистров являются зарезервированными и использовать их в качестве метки нельзя. Они применяются для указания соответствующих регистров. Символьный адрес команды является необязательным. Он указывается в команде тогда, когда на неё ссылаются в командах условного, безусловного переходов или цикла.

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

Операнды – это регистры, метки (адреса) данных или непосредственно данные. В зависимости от формата команды количество операндов может варьироваться: ни одного (безадресная команда), один (одноадресная команда) или два (двухадресная команда). Разрядность операндов должна совпадать.

Комментарий служит для пояснения действий команды или директивы ассемблера. После точки с запятой комментарий записывается на одной строке. Для продолжения комментария на последующих стоках он записывается после точки с запятой. Комментарий является необязательным.

Таким образом, из всех компонентов команды в обязательном порядке указывается сам оператор и необходимые для его выполнения операнды.

Примеры:

add ah, al; Сложение содержимого регистров ah и al

met: inc ah; Увеличение содержимого регистра ah на 1

mov ah, 25; Пересылка в регистр ah значения 25

inc cx; Увеличение содержимого регистра cx на 1

cli; Отключение маскируемых прерываний

Определение данных

В сегменте данных можно зарезервировать определённое количество байтов для размещения исходных данных или результатов работы программы, а также указать их начальные значения. Формат операторов резервирования и инициализации данных в общем случае имеет вид:

Метка Мнемоника Операнд [,Операнд… ]   [; Комментарий ]

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

Мнемоника определяет длину каждого операнда (табл. 1.1) [16, 18]:

Таблица 1.1. Основные типы данных

Тип Мнемоника Количество байт Диапазон

Байт

DB

1

0..255
-128..127

Слово

DW

2

0..65535
-32768…32767

Двойное слово

DD

4

0...4294967295
-2147483648…2147483647

 

Операнды показывают инициализируемые данные или объем резервируемого пространства. Выражение может содержать константу или символ? для неопределенного значения.

Числовые константы используются для обозначения арифметических операндов и адресов памяти. Для числовых констант в языке ассемблера могут использоваться следующие числовые форматы.

1. Десятичный формат – допускает использование десятичных цифр от 0 до 9 и обозначается конечной буквой d, которую можно не указывать. Например, 45 или 45d.

2. Шестнадцатеричный формат – допускает использование шестнадцатеричных цифр от 0 до F и обозначается последней буквой h, например 3Fh. Если шестнадцатеричное число начинается с буквы (A, B, C, D, E, F),  то первым символом такой константы должна быть цифра от 0 до 9. Например, 0Eh.

3. Двоичный формат – допускает использование цифр 0 и 1 и обозначается в конце буквой b. Например, 00001100b.

Символьные константы могут быть представлены кодами ASCII или самими символами, заключенными в апострофы, и имеют длину один байт. Например, 4Dh или ‘M’.

Приведем несколько примеров определений данных.

a1 db 104

По адресу a 1 зарезервирована байтовая ячейка, в которую помещается число 104 в десятичной системе счисления.

 

bw dw 0FFH

По адресу bw зарезервирована двухбайтовая ячейка, в которую помещается шестнадцатеричное число 0 FF.

sym1 db ‘L’     

По адресу sym 1 зарезервирована байтовая ячейка, в которую помещается символ ‘ L ’.

По некоторому адресу можно резервировать несколько ячеек инициированных разными или одинаковыми значениями. Например, определение

arr db 2, 8, 5, 7, 3

резервирует по адресу arr 5 однобайтовых смежных ячеек со значениями, соответственно, 2, 8, 5, 7 и 3.

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

str db ‘a’, ‘s’, ‘s’, ‘e’, ‘m’, ‘b’, ‘l’, ‘e’, ‘r’

Также можно задать массив символов в виде строки, в которой слева направо перечисляются символы. Строка заключается в апострофы и для ее корректной обработки (в частности, вывода на экран) в конце указывается символ « – признак конца последовательности. Например,

str1 db ‘assembler’, ‘$’

str1 db ‘assembler$’

Данные определения резервируют 9 однобайтовых ячеек: в которых сначала перечисляются последовательно символы до знака «$», а потом символ «$».

Следует отметить, что символ «$» может использоваться в качестве признака конца не только символьной, но и числовой последовательности. Например,

arr db 2, 8, 5, 7, 3, ‘$’

Для определения большого числа ячеек с одинаковыми или повторяющимися значениями можно применять оператор повторения:

Метка Мнемоника Размер DUP (Операнд [, Операнд … ])

Метка, мнемоника и Операнды идентичны описанию аналогичных компонент, приведённых выше.

Размер – константа, характеризующая количество резервируемых ячеек. Например, определение

mas db 30 dup (1,2)

резервирует по адресу mas 30 однобайтовых ячеек с начальными значениями 1 в нечетных и 2 в четных байтах.

Согласно следующему определению,

mm1 db 15 dup (0ch)

в памяти по адресу mm 1 резервируется 15 байтовых ячеек, содержащих шестнадцатеричную цифру 0СH.

Если необходимо выделить ячейки памяти, но не инициализировать их начальными значениями, то в качестве поля Операнд используется символ?. Например, определение

arg dw 4 dup (?)

резервирует по адресу arg 4 ячейки, содержащие произвольные значения.

Далее рассмотрим подробное описание ассемблерной программы на примере программы сложения двух чисел.


Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.018 с.