Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основные директивы ассемблера
Напомним, что директивы (псевдооператоры) — это инструкции ассемблеру, они обрабатываются только при ассемблировании (трансляции) программы. Приведем некоторые из часто используемых директив. Директивы определения идентификаторов Присваивают идентификатору с данным именем некоторое текстовое или числовое значение (выражение). Формат директив: имя EQU текст имя = числовое значение (выражение) Разница между псевдооператорами EQU и =: l EQU — присваивает значение постоянно (изменять нельзя), текст может быть символьным, числовым или смешанным выражением, определяющим константу, адрес, другое символьное имя, метку и т.д.; l = — выполняет текущее присваивание (значение может быть переназначено, но только при трансляции, естественно); присваивает только числовое выражение, содержащее простые математические преобразования, которые при трансляции и будут выполнены (например: const + 1, 15H*4, 3*12/4 и т.п.). Директивы определения данных Используются для идентификации переменных и полей памяти. Формат директивы [имя] D* выражение [,выражение] [,...]. Ключевые слова D* могут быть следующими: l DB — определить байт (1 байт); l DW — определить слово (2 байта); l DD — определить двойное слово (4 байта); l DQ — определить 8 байтов; l DT— определить 10 байтов. Рассматриваемые директивы объявляют переменную (имя) или присваивают полям (ячейкам) памяти начальные значения; резервируют в памяти (с более поздним присвоением значения) один или несколько байтов — DB, слов — DW, двойных слов — DD и т.д. Выражение показывает, какое количество элементов памяти необходимо выделить и какие данные там должны содержаться. Выражение может быть: l константой: l 65 5352 – 1 = 4 294 967 295; l вектором или таблицей: l строкой символов:
l пустым полем: l символическим именем переменной: l простым выражением: Директивы определения сегментов и процедур Сегмент определяется псевдооператорами: имя_сег segment ... имя_сег ends В программе можно использовать 4 сегмента (по числу сегментных регистров) и для каждого указать соответствующий регистр сегмента псевдооператором ASSUME(assume — присвоить), например: codeseg sedment assume CS:codeseg, DS:dataseg, SS:stackseg .. codeseg ends В директиве ASSUME регистр_сег:имя_сег [,..], в частности, ASSUME cs:codeseg, указывается, что для сегмента имя_сег (codeseg) выбран регистр регистр_сег (CS). После директивы ASSUME следует явным образом загрузить адрес начала сегмента данных в регистр DS: mov AX, dataseg mov DS, AX Процедура определяется псевдооператорами: имя_процедуры proc [far]... ... ret имя_процедуры endp При определении процедуры после ключевого слова proc должен быть указан атрибут дистанции nearили far; если этого атрибута нет, то по умолчанию подразумевается near. Обычно процедура должна заканчиваться командой ret (return). Если процедура объявлена как near, то обращение к ней (call) должно производиться из того же сегмента; если procfar, то из любого сегмента (в этом случае командой ret из стека при возврате будет извлечено два слова: для IP и для CS).
|
|||||
Последнее изменение этой страницы: 2021-11-27; просмотров: 73; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.251.6 (0.005 с.) |