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

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

Жанры

Ассемблер для процессоров 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 с соответствующим данному значению указателя позиции смещением. Строковая константа не может содержать более двух символов. Последний (или единственный) символ строки хранится в младшем байте слова. Второй байт содержит первый символ или, если строка односимвольная, ноль. Остальные байты заполняются нулями;

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

Точка Бифуркации V

Смит Дейлор
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации V

Маска чародея

Швайцер Даррелл
Фантастика:
фэнтези
6.20
рейтинг книги
Маска чародея

Философия

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

Дьявольская секта (Сборник)

Саган Франсуаза
Бестселлер
Детективы:
криминальные детективы
боевики
5.00
рейтинг книги
Дьявольская секта (Сборник)

Газлайтер. Том 17

Володин Григорий Григорьевич
17. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 17

Эллинские поэты

Коллектив авторов
Старинная литература:
античная литература
7.00
рейтинг книги
Эллинские поэты

Дважды одаренный. Том V

Тарс Элиан
5. Дважды одаренный
Фантастика:
аниме
альтернативная история
городское фэнтези
5.25
рейтинг книги
Дважды одаренный. Том V

Байка о том, как Лиса и Красная Королева о рае мечтали

Клауд Чак
1. Байки безумца Клауда
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Байка о том, как Лиса и Красная Королева о рае мечтали

Боги войны

Иггульден Конн
4. Император
Проза:
историческая проза
7.00
рейтинг книги
Боги войны

Путь эльдар: Омнибус

Торп Гэв
Warhammer 40000
Фантастика:
эпическая фантастика
4.50
рейтинг книги
Путь эльдар: Омнибус

Тёмный Лорд Поттер

The Santi
Проект «Поттер-Фанфикшн»
Фантастика:
фэнтези
городское фэнтези
5.00
рейтинг книги
Тёмный Лорд Поттер

Кодекс Охотника

Винокуров Юрий
1. Кодекс Охотника
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника

Игра с огнем

Джейн Анна
2. Мой идеальный смерч
Любовные романы:
современные любовные романы
9.51
рейтинг книги
Игра с огнем

Я все еще не царь. Книга XXVI

Дрейк Сириус
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI