В.Н. Пильщиков - Программирование на языке ассемблера IBM PC (1110551), страница 20
Текст из файла (страница 20)
Кроме того, элементом выражения может быть обозначение счетчика размещения (3). Значение этого вырзжения становится новым значением счетчика размещения; это означает, что очередное предложение програьщы будет размещено в памяти уже с этого нового адреса (в пропускаемые байты ничего не записывается). Примеры: око 1ООЬ иот ах,о ;втв комввдв будет рвэмедевв с адреса 100И ;твкудего сегмввтв ;дрооуствтв 20 байтов одо 0+20 Если по директиве ОйО значение счетчика размещения уменьшается, тогда очередное предложение "накладывается" на прежнюю величину, помещенную ранее по этому адресу.
14.6А. Друпге директивы <имя> йАВЕ1 <тиа> Эта директива эквивалентна предложению <имв> впо твгв <тно> (см. разд. 14.3) и определяет имя, которому приписывается текущий адрес (значение счетчика размещения 3) и указаннмй тип. Иьт должно быть уникальным в программе. Допустимые типы: ВУТЕ, 'зЧОК0, 0%0й0, ЫЕАЕ, РАй. Директива (.АВЕ(. используется для того, чтобы на следующую за ней команду или переменную можно было ссылаться по имени с иным типом, чем это разрешается согласно описанию команды или переменной.
Например: уь ьаввь?ад;уь и нь метят одву и ту ке комввду, ньг Мпт аХ,О;во УЬ - двкьввг метка, в Нз, - бвввквв .1Ь<01Х <константное вираж виан> В ЯА числа могут быть записаны в системах счисления с основаниями 10, 16, 8 и 2 (106, 10Ь, 10с), 10Ь и т. и.). Если буква-спецификатор в конце числа не указана (нвпример, 10), то полразумевается десятичное число. Однако это правило можно изменить с помощью директивы .КАЯХ: значение ее операнла указывает основание той системы счисления, которая теперь будет подразумеваться, когда число записано без буквы-специфнккзорк Значением операнда должно быть число 10, 16, 8 или 2 (если оно указано без спецификаторв, то всегда трактуется как десятичное). Отметим, что если по умолчанию установлена шеспщвцатеричная система, то буквы Ь и 6 в конце числа трактуются как спсцификатор, а не как цифра на- "диллопмиои" яао Пдогдвммидоееиив ив иэыее ассемблере (ЛЫ йп приьгер, 10Ь - это 10 в двоичной системе, а 10а - вто 10 в десятичной системе; шесгналпатеричные же числа 10В и 10)У надо записывать как 10ВЬ и 100Ь.
Примеры: ЛАМЕ <мил модуля> По атой директиве указанное ши (от него берется б первых символов) присваивается текущему модулю программы и используется коыпоновщиком в диагностических сообщениях в случае обнаружения ошибок при объединении модулей программы: это имя указывается в скобках после имени фаГща с данным молулем. (В других лелях зто ньи не используется.) Например, если в модуле имеется директива ХАМЕ МОО1 и если в оттранслированном виде модуль находится в файле РКОО.ОВУ, тогда возможно такое сообщение об'ошибке на этапе компоновки (об имени )УИ), указанном в данном модуле как внешнее, но не описанном как общее в других модулях): овсвво1чва васвсаа1в: ВПВ 1в Я11в(в) васа.ОВЮ(ИОП1) В модуле должно быть не более одной директивы ХАМЕ.
Если ее нет, в качестве имени модуля берутся первые б символов из текста, указанного в директиве ЧТП.Е, а если и ее нет, модулю дастся иьш А. .ВЬП1Х 16 ИоЧ ЬХ,10 иоч ах,зса иоЧ ЬХ,1ОВЬ ЛЬПХХ 10 иоч ьх,)О иоч ах,зоь ГЬХз=10Ь 16 ;Ьхг 10 )ЬХг 10ВЬ 269 )двсатачаов 10 (!) ГЬХг 10 ; ЬХ г =1 ОЬ=1 6 СПИСОК ЛИТЕРАТУРЫ Брэдли Д. Программирование на языке ассемблера для персональной ЭВМ фирмы 1ВМ: Пер. в англ. - Мл Радио и связь, 1988.
- 448 с. Скэнлон Л. Персональные ЭВМ 1ВМ РС и ХТ. Программирование на языке ассемблера: Пер. с англ. - Мл Радио и связь, 1991. - 336 с. Абель П. Язык Ассемблера для 1ВМ РС и программирования: Пер. с англ.- Мл Высшая школа, 1992. - 477 с. Нортон П., Сохуз Д. Язык ассемблера для 1ВМ РС: Пер. с англ. - Мл Издательство "Компьютер"; Финансы и статистика, 1992. - 352 с. Использование ТогЬо Амешйег при разработке программ. - Киев: "Диалектика", 1994. - 288 с.
Ляыин Л. В. Макроассеыблер МАВМ. - МА Радио и связь, 1994. - 320 с. "ДИАЛОГ-МИФИ ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ........ 5 6 7 26 Глава 1 ОСОБЕННОСТИ ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА.................:......................... 1.1. Оперативная лазить ..................................................................................... 1.2. Регистры ....... Регистры общего назначения (8). Сегментные регистры (9). Указатель коьгаид (11). Регистр флагов (11). 1.3.
Представление данных. 12 Представление целых чисел (12). Двоична-десятичиые числа (15). О вещественных числах (16). Представление символьных данных (16). 1.4. Представление команд Глава 2 ЯЗЫК АССЕМБЛЕРА. НАЧАЛЬНЫЕ СВЕДЕНИЯ .......,...,.....,....,....,...,,... 20 2.1. Лексеыы .. 21 Идентификаторы (21).
Целые числа (21). Символьные данные (22). 2.2. Предложения . 23 Комментарии (23). Команды (24). Директивы (25). Ссылки назад и вперед (26). 2.3. Директивы определения данных.. Директива ОВ (26). Директива 0% (31). Директива ОО (33). 2.4. Директивы эквивалентности и присваивания ............................................34 2.5. Выражения... 38 Константные выражения (39). Адресные выражения (40). Глава У ПЕРЕСЫЛКИ. АРИФМЕТИЧЕСКИЕ КОМАНДЫ ................................................ 42 3.1.
Обозначение операндов команд аз 3.2. Команды пересылки........................................................... 42 Команда МОУ (42). Оператор указания типа (РТЕ) (44). Команда ХСНО (46). 3.3. Команды сложения и вычитаииа.. 47 Особеиности сложения и вычитания целых чисел в ПК (47). Команды сложеииа и вычитания (50). 3.4. Команды уьшожения и деления. 53 Команды умножения (53). О команде умножения в процессорах 80186 и старше (54). Команды деления (55). 3.5. Изменение размера числа 57 3.6. Примеры . 59 о а вв ава Глава 4 ПЕРЕХОДЫ.
ЦИКЛЫ. ..63 4.1. Безусловнмй переход. Оператор 8НОКТ,.....,,....,......,...,...,....,.... 63 Примой переход (63). Оператор 8НОКТ (65). Косвенный переход (66). 4.2. Коьшнды сравнения и условного перехода................................................ 67 4.3. Команды управления циклом ................................................................. 70 Команда 1.00Р (71).
Команды 100РЕЙ.001 в. и (.ООРНЕЛ.ООР)з 2 (73). 4.4. Вспомогательные операции ввода-вывода.................................................. 74 Останов программы (75). Ввод с клавиатуры (75). Вывод на экран (76). 4.5. Примеры . 77 92 Глава 6 БИТОВЫЕ ОПЕРАЦИИ. УПАКОВАННЫЕ ДАННЫЕ .....................................
6.1. Лопзческие команды 6,2. Коыанды сдвига., Логические сдвиги (108). Арифыетические сдвипз (109). Циклические сдвиги (110). Коыанды сдвига в процессорах 80186 и старше (112). 6.3. Упакованные данные. 6.4. Множества................................................................ Машинное представление множеств (116). Реализация операций над множествами (117).
6.5. Записи... Описание типа записи (118). Описание переменных-записей (119). Срелства для работы с полями записей (120). 104 104 107 112 116 118 "диалог-илаи Глава 5 МАССИВЫ. СТРУКТУРЫ .. ..83 5.1. Об индексах элементов массива ..83 5.2.. Реализация переменных с индексом. ..84 Модификация адресов (84). Ивцексирование (85). Косвенные ссылки (86). Модификация по нескольким регистрам (87). Запись модифицируемых адресов в ЯА (88). 5.3. Команды ЕЕА и Х1.АТ ..90 Команда ЕЕА 90 Команда Х1 АТ 92 5.4.
Структуры.. Описание типа структуры (92). Описание переменных-структур (94). Ссылки на поля структур (96). Уточнения (96). 5.5. Примеры .......,.......................... ..98 яав Программирование нв языке вссвмаяере ГВЫ рС Глава 8 СТЕК. 142 142 143 8.1. Стек и сегмент стека 8.2. Стековые команды Запись и чтение слов (143). Запись и чтение регистра флагов (145), Сгековые калганам процессора 80186 (145). 8.3. Некоторые приемы работы со стеком ................................................... 8.4. Пример испольювания стека.......... 146 148 Глава 9 ПРОЦЕДУРЫ ..
9.1. Дальние перехолы . 9.2. Подпрограммы-процелуры .. Где размещать подпрограмму? (153). Как оформлять подпрограьцгу? (153). Вызов процедур и возврат из них (154). Другие варианты команды СА(.Ь (157). 9.3. Передача параметров через регистры.. Передача параметров по значению (158). Перелача параметров по ссылке (158). Сохранение регистров в процедуре (159). Передача параметров сложных типов (160). 9.4.
Передача параметров через стек .. 9.5. Локальные данные процелур. 9.6. Рекурсивные процедуры. 150 150 15з 157 161 164 166 Глава 10 ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ......................................... 10.1. Строковые команды, Префиксы повторения ...................................,..... Коыанда сравнения строк (169). Префиксы повторения (171). Другие строковые команды (175). Команды загрузки адресных пар в регистры (177). 10.2. Строки перелгенной длины .
10.3. Списки.. Представление списков (181). Операции над списками (183). Организация кучи (186). 169 169 178 181 Глава 7 ПРОГРАММНЫЕ СЕГМЕНТЫ .. . 122 7.1. Сегментирование адресов в ПК. 122 Общая схема базирования адресов (122). Особенности сегментирования адресов в ПК (123). Сегментные регистры по умолчанию (126). 7.2. Прогрюгмные сегменты..