Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Arkhitektura_EVM.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
465.73 Кб
Скачать
  1. Общий вид строк программ на языке ассемблера.

Строка имеет следующий синтаксический вид:

метка команда/директива операнд(ы) ;комментарии

Все поля не обязательны. Метка может быть любой комбинацией английских букв и символов. Второе поле содержит команды процессора, транспортируемые в исполняемый код или директиву управляющую работой ассемблера. Если команду или директиву необходимо продолжить на следующей строке, то используется символ обратный слеш: \.

По умолчанию язык ассемблера не различает заглавные и строчные буквы в написании команд или директив.

  1. Метка: назначение, синтаксис, правила именования, директива метки, вызов метки

Метка в языке ассемблера может содержать следующие символы:

  • все буквы латинского алфавита;

  • цифры от 0 до 9;

  • спецсимволы: _, @, $, ?.

В качестве первого символа метки может использоваться точка, но некоторые компиляторы не рекомендуют применять этот знак. В качестве меток нельзя использовать зарезервированные имена Ассемблера (директивы, операторы, имена команд).

Первым символом в метке должна быть буква или спецсимвол (но не цифра). Максимальная длина метки – 31 символ. Все метки, которые записываются в строке, не содержащей директиву ассемблера, должны заканчиваться двоеточием :. Когда метка стоит перед директивой ассемблера, она оказывается операндом этой директивы.

Директивы, работающие напрямую с метками: LABEL, EQU и =.

Директива LABEL определяет метку и задает ее тип. Тип может быть одним из:

  • BYTE (байт),

  • WORD (слово),

  • DWORD (двойное слово),

  • FWORD (6 байт),

  • QWORD (учетверенное слово),

  • TBYTE (10 байт),

  • NEAR (ближняя метка),

  • FAR (дальняя метка).

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

В зависимости от типа команда mov метка,0 запишет в память байт , заполненный нулями, а команда call метка выполнит ближний или дальний вызов подпрограммы.

Директива EQU присваивает метке значение, которое определяется как результат целочисленного выражения в правой части.

Метка = выражение

Специальные предопределенные метки:

  • @date или ??date - это может быть текущая дата

  • @cpu - тип процессора

  • $ - текущий адрес

  1. Псевдокоманды

Псевдокоманда— это директива ассемблера, которая приводит к включению данных или кода в программу, хотя сама она никакой команде процессора не соответствует. Псевдокоманды определения переменных указывают ассемблеру, что в соответствующем месте программы располагается переменная, определяют тип переменной (байт, слово, вещественное число и т.д.), задают ее начальное значение и ставят в соответствие переменной метку, которая будет использоваться для обращения к этим данным. Псевдокоманды определения данных записываются в общем виде следующим образом:

имя_переменной d* значение

где D* — одна из нижеприведенных псевдокоманд:

DB — определить байт;

DW — определить слово (2 байта);

DD — определить двойное слово (4 байта);

DF — определить 6 байт (адрес в формате 16-битный селектор: 32-битное смещение);

DQ — определить учетверенное слово (8 байт);

DT — определить 10 байт (80-битные типы данных, используемые FPU).

Поле значения может содержать одно или несколько чисел, строк символо, операторов ? и DUP, разделенных запятыми. Например:

text_string db 'Hello world!'

number dw 7

Если вместо точного значения указан знак ?, переменная считается неинициализированной и ее значение на момент запуска программы может оказаться любым.

Если нужно заполнить участок памяти повторяющимися данными, используется специальный оператор DUP.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]