Реферат: ЯЗЫК МАКРОАССЕМБЛЕРА IBM PC

На символ отводится один байт памяти, в который записывается код символа - целое от 0 до 255. В ПК используется система кодировки ASCII (American Standard Code for Information Interchange). Она, естествен­но, не содержит кодов русских букв, поэтому в нашей стране применяется некоторый вариант этой системы с русскими буквами (обычно это альтер­нативная кодировка ГОСТа).

Некоторые особенности этих систем кодировки:

- код пробела меньше кода любой буквы, цифры и вообще любого графи-

чески представимого символа;

- коды цифр упорядочены по величине цифр и не содержат пропусков,

т.е. из неравенства код('0')<=код(c)<=код('9') следует, что c - цифра; - коды больших латинских букв упорядочены согласно алфавиту и не со-

держат пропусков; аналогично с малыми латинскими буквами;

- (в альтернативной кодировке ГОСТа) коды русских букв (как больших, так и малых) упорядочены согласно алфавиту, но между ними есть коды других символов.

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

В ПК строкой считается также и последовательность слов (обычно это

последовательность целых чисел). Элементы таких строк располагаются в последовательных ячейках памяти, но каждый элемент представлен в "пе­ревернутом" виде.

1.2.4 Представление адресов

Адрес - это порядковый номер ячейки памяти, т.е. неотрицательное целое число, поэтому в общем случае адреса представляются так же, как и беззнаковые числа. Однако в ПК есть ряд особенностей в представлении адресов.

Дело в том, что в ПК термином "адрес" обозначают разные вещи. Час­то под адресом понимается 16-битовое смещение (offset) - адрес ячейки, отсчитанный от начала сегмента (области) памяти, которому принадлежит эта ячейка. В этом случае под адрес отводится слово памяти, причем ад­рес записывается в "перевернутом" виде (как и числа-слова вообще).

В другом случае под "адресом" понимается 20-битовый абсолютный ад­рес некоторой ячейки памяти. В силу ряда причин в ПК такой адрес зада­ется не как 20-битовое число, а как пара "сегмент:смещение", где "сег­мент" (segment) - это первые 16 битов начального адреса сегмента памя­ти, которому принадлежит ячейка, а "смещение" - 16-битовый адрес этой ячейки, отсчитанный от начала данного сегмента памяти (величина 16*сегмент+смещение даетабсолютный адрес ячейки). Такая пара записы­вается в виде двойного слова, причем (как и для чисел) в "переверну­том" виде: в первом слове размещается смещение, а во втором - сегмент, причем каждое из этих слов в свою очередь представлено в "переверну­том" виде. Например, пара 1234h:5678h будет записана так:

---------------------

| 78 | 56 | 34 | 12 |

---------------------

смещение сегмент

1.2.5 Директивы определения данных

Для того чтобы в программе на MASM зарезервировать ячейки памяти под константы и переменные, необходимо воспользоваться директивами оп­ределения данных - с названиями DB (описывает данные размером в байт), DW (размером в слово) и DD (размером в двойное слово). (Директивы, или команды ассемблеру, - это предложения программы, которыми ее автор со­общает какую-то информацию ассемблеру или просит что-то сделать допол­нительно, помимо перевода символьных команд на машинный язык.)

В простейшем случае в директиве DB, DW или DD описывается одна константа, которой дается имя для последующих ссылок на нее. По этой директиве ассемблер формирует машинное представление константы (в час­тности, если надо, "переворачивает" ее) и записывает в очередную ячей­ку памяти. Адрес этой ячейки становится значением имени: все вхождения имени в программу ассемблер будет заменять на этот адрес. Имена, ука­занные в директивах DB, DW и DD, называются именами переменных (в от­личие от меток - имен команд).

В MASM числа записываются в нормальном (неперевернутом) виде в cи­стемах счисления с основанием 10, 16, 8 или 2. Десятичные числа запи­сываются как обычно, за шестнадцатиричным числом ставится буква h (ес­ли число начинается с "цифры" A, B, ..., F, то вначале обязателен 0), за восьмиричным числом - буква q или o, за двоичным числом - буква b.

Примеры:

A DB 162 ;описать константу-байт 162 и дать ей имя A

B DB 0A2h ;такая же константа, но с именем B

С DW -1 ;константа-слово -1 с именем С

D DW 0FFFFh ;такая же константа-слово, но с именем D

E DD -1 ;-1 как двойное слово

Константы-символы описываются в директиве DB двояко: указывается либо код символа (целое от 0 до 255), либо сам символ в кавычках (оди­нарных или двойных); в последнем случае ассемблер сам заменит символ на его код. Например, следующие директивы эквивалентны (2A - код звез­дочки в ASCII):

CH DB 02Ah


CH DB '*' CH DB "*"

Константы-адреса, как правило, задаются именами. Так, по директиве

К-во Просмотров: 487
Бесплатно скачать Реферат: ЯЗЫК МАКРОАССЕМБЛЕРА IBM PC