Similar presentations:
Метки, символьные имена и константы
1.
04.03.2023Метки, символьные
имена и константы
Предмет: МДК 01.04 Системное программирование
2.
Храненияинициализированных
данных
Синтаксис стейтмента* выделения памяти для
инициализированных данных следующий:
[имя_переменной]
директива_определения
начальное_значение [,начальное_значение]...
Где
имя_переменной
является
идентификатором для каждого пространства
хранения данных. Ассемблер связывает значение
смещения с именем каждой переменной,
определенной в сегменте данных.
*Cтейтмент (англ. "statement") – это
наиболее распространённый тип
инструкций в программах. Это всё, что
заканчивается точкой с запятой (;) или
является управляющей конструкцией (но не
само ключевое слово).
3.
Есть 5 основных форм директивыопределения:
Пространство для хранения
Директива
Цель
DB
Определяет Byte
Выделяет 1 байт
DW
Определяет Word
Выделяет 2 байта
DD
Определяет Doubleword
Выделяет 4 байта
DQ
Определяет Quadword
Выделяет 8 байт
DT
Определяет 10 Byte
Выделяет 10 байт
4.
Примерыиспользования
директив
определения:
5.
• каждый байт символа хранится как его ASCIIзначение в шестнадцатеричном формате;• каждое десятичное значение автоматически
конвертируется в 16-битный двоичный эквивалент и
сохраняется в виде шестнадцатеричного числа;
• процессор использует прямой порядок байтов;
• отрицательные числа конвертируются в форму
«two’s complement»;
• короткие и длинные числа типа с плавающей точкой
представлены с использованием 32 или 64 бит,
соответственно.
6.
Программа показывающая использование директивы определения:7.
Что являетсярезультатом
данной
программы?
Кто правильно ответил: у, тому 5.
8.
Хранениенеинициализированны
х данных
Директивы
резервирования
используются
для
резервирования
пространства
неинициализированных
данных.
Директивы
резервирования
принимают
один
операнд,
который
определяет
количество
единиц
пространства,
которое
будет
зарезервировано.
Каждая
директива
определения имеет связанную директиву
резервирования.
9.
Есть 5 основных форм директив резервирования:Директива
Цель
RESB
Резервирует Byte
RESW
Резервирует Word
RESD
Резервирует Doubleword
RESQ
Резервирует Quadword
REST
Резервирует 10 Byte
10.
Можно иметь несколько стейтментов определения данных в программе.Например:
1 choice DB 'Y' ; ASCII-значение для y = 79H
2 number1 DW 12345 ; 12345D = 3039H
3 number2 DD 123456789 ; 123456789D = 75BCD15H
Ассемблер выделяет смежную память для нескольких определений переменных.
11.
Несколькоинициализац
ий
Директива TIMES позволяет выполнить
несколько инициализаций одного значения.
Например, массив с именем marks длиной 9 может
быть определен и инициализирован нулем
следующим образом:
1 marks TIMES 9 DW 0
Директива TIMES полезна при определении
массивов и таблиц.
12.
Что выводит следующая программа?13.
Определениеконстант
NASM предоставляет
несколько директив,
определяющих константы:
директива EQU;
директива %assign;
директива %define.
14.
Директива EQU используется для определенияконстант. Её синтаксис следующий:
ИМЯ_КОНСТАНТЫ EQU-выражение
Например:
Директива EQU
TOTAL_STUDENTS equ 50
Затем можно использовать эту константу в
программе:
mov ecx, TOTAL_STUDENTS
cmp eax, TOTAL_STUDENTS
15.
Операндом стейтмента EQU может быть выражение:1 LENGTH equ 20
2
WIDTH equ 10
3
AREA equ length * width
Вышеприведенный фрагмент кода определит AREA как 200.
16.
17.
Директива %assign может быть использована дляопределения числовых констант. Эта директива
допускает переопределение. Например, можно
определить константу TOTAL следующим образом:
Директива
%assign
1 %assign TOTAL 10
Затем в коде она переопределяется:
1 %assign TOTAL 20
Эта директива является чувствительной к
регистру.
18.
Директива%define
Директива %define позволяет определять как
числовые, так и строковые константы. Эта
директива похожа на директиву #define в языке С.
Например, можно определить константу PTR
следующим образом:
1 %define PTR [EBP+4]
Вышеприведенный код заменяет PTR на [EBP+4].
Эта директива также допускает переопределение и
является чувствительной к регистру.