Чтение онлайн

на главную - закладки

Жанры

Ассемблер для процессоров Intel Pentium

Магда Юрий

Шрифт:

Представление символа А в соответствии со стандартом ASCII выражается шестнадцатеричным значением 41h, представление символа В – значением 42h и т. д. Наличие стандартного кода облегчает обмен данными между различными устройствами компьютера. При этом 8-битовый расширенный код ASCII, используемый в компьютерах, обеспечивает представление 256 символов, включая символы национальных алфавитов.

3.2. Первичные элементы языка ассемблера

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

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

 

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r st u v w x y z

0 1 2 3 4 5 6 7 8 9

? @ _ $ : . [ ] < > { }

+ / * & % ! ' ~ | \ = # ^ ; , ` "

Конструкции языка ассемблера формируются из идентификаторов и ограничителей. Идентификатор представляет собой набор букв, цифр и символов _, ?, $ или @, причем первый элемент не должен быть цифрой. Идентификатор должен полностью размещаться на одной строке и может содержать от 1 до 31 символа (если их больше чем 31, то остальные игнорируются).

Друг от друга идентификаторы отделяются пробелом или ограничителем, которым считается любой недопустимый в идентификаторе символ. Посредством идентификаторов представляются объекты программы, такие, как переменные, метки и имена.

Переменные идентифицируют находящиеся в памяти данные и в общем случае характеризуются тремя атрибутами:

– сегментом, в котором определена переменная (действительно для 16-разрядных приложений, где полный адрес переменной формируется как сегмент: смещение; для 32-разрядных приложений этот атрибут не используется);

– смещением данного поля памяти относительно начала сегмента;

– типом, определяющим число, обрабатываемое при работе с переменной.

Метка (label) является частным случаем переменной, причем ссылка на нее указывается в командах условного или безусловного перехода. Для 16-разрядных приложений метка характеризуется атрибутами сегментхмещение, для 32-разрядных – только смещением. Метка также может быть определена через другую метку с использованием директивы EQU, как в этом примере:



Именами являются последовательности символов, определенные директивой EQU и принимающие значение символа или числа. Другое название имени – константа. Примеры имен:

namel EQU 'ABCD'

digit EQU 10

Некоторые идентификаторы, называемые ключевыми словами, имеют предопределенный смысл. К ним относятся директивы ассемблера, команды (инструкции) процессора, имена регистров, операторы выражений. К таким идентификаторам относится и указатель позиции (location counter), обозначаемый символом $.

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

stringl BYTE «Test String»

level WORD 5

res BYTE 10 DUP (?)

len EQU $-stringl

Константа len в этом примере равна 22 (именно столько байтов памяти занимают переменные stringl, level и res).

Следует помнить, что обычно ассемблер не

различает строчные и прописные буквы и идентификаторы могут включать в себя буквы обоих регистров. Например, идентификаторы Abs и abs считаются идентичными. Различие между строчными и прописными буквами может быть установлено параметрами /ML и /MX макроассемблера MASM.

Рассмотрим типы и формы представления данных, которые могут быть использованы в выражениях, директивах и инструкциях языка ассемблера. Начнем с целых чисел. Целые числа могут быть представлены набором цифр и/или символов, после которых задается тип кодировки (основание счисления). Тип кодировки определяется одной из литер: В – двоичная, О – восьмеричная, D или Т – десятичная, H – шестнадцатеричная. При этом шестнадцатеричные числа не должны начинаться с буквенных шестнадцатеричных цифр (например, вместо ABh следует использовать запись OABh). Шестнадцатеричные цифры от А до F могут кодироваться в обоих регистрах.

Процессор оперирует с типами данных, определяемых директивами:

– DB – распределение и инициализация 1 байта памяти для каждого из указанных значений. В качестве значения может кодироваться целое число, строковая константа, оператор DUP (см. далее), абсолютное выражение или знак ?. Знак ? обозначает неопределенное значение. Значения, если их несколько, должны разделяться запятыми. Если директива имеет имя, создается переменная типа BYTE с соответствующим данному значению указателя позиции смещением. Строковая константа может содержать столько символов, сколько помещается на одной строке. Символы строки хранятся в памяти в порядке их следования, то есть первый символ имеет самый младший адрес, последний – самый старший;

– DW – распределение и инициализация слова памяти (2 байта) для каждого из указанных значений. В качестве значения может кодироваться целое число, одно– или двухсимвольная константа, оператор DUP, абсолютное выражение, адресное выражение или знак ?. Знак ? обозначает неопределенное значение. Значения, если их несколько, должны разделяться запятыми. Если директива имеет имя, создается переменная типа WORD с соответствующим данному значению указателя позиции смещением. Строковая константа не может содержать более двух символов. Последний (или единственный) символ строки хранится в младшем байте слова. Старший байт содержит первый символ или, если строка односимвольная, ноль;

– DD – распределение и инициализация двойного слова памяти (4 байта) для каждого из указанных значений. В качестве значения может кодироваться целое число, одно– или двухсимвольная константа, действительное число, кодированное действительное число, оператор DUP, абсолютное выражение, адресное выражение или знак ?. Знак ? обозначает неопределенное значение. Значения, если их несколько, должны разделяться запятыми. Если директива имеет имя, создается переменная типа DWORD с соответствующим данному значению указателя позиции смещением. Строковая константа не может содержать более двух символов. Последний (или единственный) символ строки хранится в младшем байте слова. Второй байт содержит первый символ или, если строка односимвольная, ноль. Остальные байты заполняются нулями;

Поделиться:
Популярные книги

Собрание сочинений Джерома Клапки Джерома в одной книге

Джером Клапка Джером
7. Абсолют
Проза:
классическая проза
5.00
рейтинг книги
Собрание сочинений Джерома Клапки Джерома в одной книге

Том 1. Русская литература

Луначарский Анатолий Васильевич
1. Собрание сочинений в восьми томах
Документальная литература:
критика
5.00
рейтинг книги
Том 1. Русская литература

Голубой бриллиант (Сборник)

Шевцов Иван Михайлович
Проза:
современная проза
4.50
рейтинг книги
Голубой бриллиант (Сборник)

Двадцать один год

Кинешемцева Мелания
Любовные романы:
прочие любовные романы
5.00
рейтинг книги
Двадцать один год

Эстетика

Бычков Виктор Васильевич
Научно-образовательная:
философия
5.00
рейтинг книги
Эстетика

Роза ветров

Кас Маркус
6. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Роза ветров

Я снова князь. Книга XXIII

Дрейк Сириус
23. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я снова князь. Книга XXIII

Корабль судьбы. Том 2

Хобб Робин
3. Сага о живых кораблях
Фантастика:
фэнтези
9.15
рейтинг книги
Корабль судьбы. Том 2

Том 6. Зарубежная литература и театр

Луначарский Анатолий Васильевич
6. Собрание сочинений в восьми томах
Документальная литература:
критика
5.00
рейтинг книги
Том 6. Зарубежная литература и театр

Серия "Афган. Чечня. Локальные войны". Компиляция. Книги 1-34

Бобров Глеб Леонидович
Антология военной литературы
Проза:
военная проза
5.00
рейтинг книги
Серия Афган. Чечня. Локальные войны. Компиляция. Книги 1-34

Избранное

Горин Григорий Израилевич
Проза:
современная проза
5.00
рейтинг книги
Избранное

Повелитель. Тетралогия

Седых Александр Иванович
1. Повелитель
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.17
рейтинг книги
Повелитель. Тетралогия

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Домашняя медицинская энциклопедия. Симптомы и лечение самых распространенных заболеваний

Коллектив авторов
Научно-образовательная:
медицина
5.00
рейтинг книги
Домашняя медицинская энциклопедия. Симптомы и лечение самых распространенных заболеваний