Assembler, Детальна інформація

Assembler
Тип документу: Реферат
Сторінок: 15
Предмет: Комп`ютерні науки
Автор:
Розмір: 66.8
Скачувань: 2495
Допустимыми символами при написании текста программ являются:

все латинские буквы: A-Z, a-z. При этом заглавные и строчные буквы считаются эквивалентными;

цифры от 0 до 9;

знаки ?, @, $, _, &;

разделители , . [ ] ( ) < > { } + / * % ! ' " ? \ = # ^.

Предложения ассемблера формируются из лексем, представляющих собой синтаксически неразделимые последовательности допустимых символов языка, имеющие смысл для транслятора. Лексемами являются: идентификаторы - последовательности допустимых символов, использующиеся для обозначения таких объектов программы, как коды операций, имена переменных и названия меток. Правило записи идентификаторов заключается в следующем: идентификатор может состоять из одного или нескольких символов. В качестве символов можно использовать буквы латинского алфавита, цифры и некоторые специальные знаки - _, ?, $, @. Идентификатор не может начинаться символом цифры. Длина идентификатора может быть до 255 символов, хотя транслятор воспринимает лишь первые 32, а остальные игнорирует. Регулировать длину возможных идентификаторов можно с использованием опции командной строки mv. Кроме этого существует возможность указать транслятору на то, чтобы он различал прописные и строчные буквы либо игнорировал их различие (что и делается по умолчанию). Для этого применяются опции командной строки /mu, /ml, /mx;цепочки символов - последовательности символов, заключенные в одинарные или двойные кавычки; целые числа в одной из следующих систем счисления: двоичной, десятичной, шестнадцатеричной. Отождествление чисел при записи их в программах на ассемблере производится по определенным правилам: Десятичные числа не требуют для своего отождествления указания каких-либо дополнительных символов, например 25 или 139. Для отождествления в исходном тексте программы двоичных чисел необходимо после записи нулей и единиц, входящих в их состав, поставить латинское "b", например 10010101b. Шестнадцатеричные числа имеют больше условностей при своей записи: Во-первых, они состоят из цифр 0...9, строчных и прописных букв латинского алфавита a, b, c, d, e, f или A, B, C, D, E, F. Во-вторых, у транслятора могут возникнуть трудности с распознаванием шестнадцатеричных чисел из-за того, что они могут состоять как из одних цифр 0...9 (например 190845), так и начинаться с буквы латинского алфавита (например ef15). Для того чтобы "объяснить" транслятору, что данная лексема не является десятичным числом или идентификатором, программист должен специальным образом выделять шестнадцатеричное число. Для этого на конце последовательности шестнадцатеричных цифр, составляющих шестнадцатеричное число, записывают латинскую букву "h". Это обязательное условие. Если шестнадцатеричное число начинается с буквы, то перед ним записывается ведущий ноль: 0ef15h. Таким образом, мы разобрались с тем, как конструируются предложения программы ассемблера. Но это лишь самый поверхностный взгляд.

Практически каждое предложение содержит описание объекта, над которым или при помощи которого выполняется некоторое действие. Эти объекты называются операндами.

Их можно определить так:

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

постоянные, или непосредственные, операнды ,адресные операнды .перемещаемые операнды ,счетчик адреса ,регистровый операнд .базовый и индексный операнды .структурные операнды ,Записи ,Рассмотрим подробнее характеристику операндов из приведенной классификации: Постоянные или непосредственные операнды - число, строка, имя или выражение, имеющие некоторое фиксированное значение. Имя не должно быть перемещаемым, то есть зависеть от адреса загрузки программы в память. К примеру, оно может быть определено операторами equ или =.

num     equ     5

imd = num-2

        mov     al,num  ;эквивалентно mov al,5 

;5 здесь непосредственный операнд

        add     [si],imd        ; imd=3 - непосредственный операнд

        mov     al,5            ;5 - непосредственный операнд

        



Рис. 4. Синтаксис описания адресных операндов

К примеру:

mov     ax,0000h

        mov     ds,ax

        mov     ax,ds:0000h     ;записать слово в ax из области памяти по

                                        ;физическому адресу

0000:0000

        

Здесь третья команда mov имеет адресный операнд. 

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

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

К примеру:

The online video editor trusted by teams to make professional video in minutes