Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
arkhitektura.docx
Скачиваний:
50
Добавлен:
12.01.2020
Размер:
216.72 Кб
Скачать

14. Ассемблер. Описание сегмента данных.

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

[имя] КС выражение

Имя – имя переменной (константы, или поля данных). Фактически, это имя будет указывать на адрес байта в памяти, где будет храниться первый байт этой переменной.

КС – ключевые слова, могут быть: DB (1), DW(2), DD(4), DQ(8), DT(10)

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

Например:

PEREM1 DW 56 – под переменную с именем PEREM1 зарезервировать 2 байта памяти и присвоить ей начальное значение 56.

MASSIV DB 10 DUP (‘ ‘) – под переменную с именем MASSIV зарезервировать 10 байт памяти по одному байту и заполнить их символом пробела.

POLE DB 5 DUP (?) – под переменную с именем POLE зарезервировать 5 байт памяти по одному байту, и не присваивать ей никаких начальных значений.

MESSAGE DB ‘Вами неправильно набран номер $’ – определена строка со значением «Вами неправильно набран номер». Строка может содержать до 255 символов, использование в качестве КС DB и наличие счетчика адреса обязательны.

ADDR DW PEREM1 – переменной ADDR выделить 2 байта памяти и присвоить ей адрес (эффективный) ранее созданной переменной PEREM1.

15. Ассемблер. Способы адресации памяти.

Способы адресации памяти.

Рассмотрим на примере команды MOV

Непосредственная адресация.

Величина операнда непосредственно указывается в команде и может быть задана числом в различных системах счисления. Допускается использование модификаторов.

Примеры:

MOV AX, 10FH; MOV BX, 10H/2

Прямая адресация регистров.

В качестве операнда указывается имя регистра

MOV AX, BX; MOV DX, BX

Адресация ячеек ОП.

Прямая

В качестве адреса ячейки указывается имя переменной (фактически оно означает ее эффективный адрес)

MOV AX, PEREM – передать в AX содержимое переменной PEREM

Косвенная базовая адресация

Эффективный адрес нужной ячейки содержится в одном из регистров.

MOV AX, [CX] – передать в AX содержимое ячейки памяти, адрес которой находится в CX

Косвенная базовая адресация со смещением

Эффективный адрес нужной ячейки вычисляется как сумма базы и смещения.

MOV AX, PEREM[BX] – передать в AX содержимое ячейки памяти, расположенной на BX байт дальше, чем PEREM

MOV AX, [CX+3] – передать в AX содержимое ячейки памяти, имеющей эффективный адрес CX+3

Косвенная индексная адресация со смещением

Аналогично предыдущей, но возможно масштабирование смещения

MOV AX, PEREM[SI*2] - передать в AX содержимое ячейки памяти, расположенной на SI*2 байт дальше (или на SI слов дальше), чем PEREM

Косвенная базовая индексная адресация

MOV AX, [SI][DX] – поместить в AX содержимое ячейки памяти, эффективный адрес которой равен SI+DX

Косвенная базовая индексная адресация со смещением

MOV PEREM[SI+5][DX] - передать в AX содержимое ячейки памяти, расположенной на SI+5+DX байт дальше, чем PEREM

Соседние файлы в предмете Архитектура информационных систем