Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler_konspekt_1.doc
Скачиваний:
16
Добавлен:
10.11.2019
Размер:
274.94 Кб
Скачать

Сегментация памяти

Память трактуется как одномерный массив байтов, каждый байт ассоциируется с двоичным адресом (номером), который называется физическим адресом.

Физический адрес – это 20-битовое беззнаковое целое от 0h до FFFFFh (метка h обозначает 16-ричную систему счисления), которое позволяет описать адресное пространство объемом 1 Мбайт.

Разрядность основного слова МП равна 2 Байта = 16 бит, поэтому для вычисления физического адреса используется выделение из адресного пространства сегментов по 64Кбайта (216), и в пределах сегмента можно определять адрес с помощью 16-битового кода.

Сегменты в адресном пространстве должны размещаться, только начиная с байтов, адреса которых кратны 16, т.е. 4 младших бита – нулевые. Такие адреса называются параграфами.

Логический адрес представляет собой пару двухбайтовых беззнаковых целых чисел, разделенных двоеточием:

  • начальный адрес сегмента (базовый),

  • смещение (эффективный адрес), указывает расстояние в байтах от начала сегмента до адресуемого байта.

Например, могут быть указаны регистры, хранящие соответствующие коды

CS : IP

При вычислении физического адреса МП расширяет содержимое сегментного регистра четырьмя нулевыми битами, затем суммирует полученное число со смещением. Получим следующую схему образования физического адреса.

15 11 0

DS

начальный адрес сегмента

0 0 0 0

+

15 0

смещение внутри сегмента

19 0

физический адрес байта

Ячейка памяти – это неделимый в данной операции набор последовательных битов.

Структура команд мп

Машинные команды МП занимают от одного до 6 байтов, причем операционная часть занимает один или 2 первых байта команды, остальные байты – адресная часть.

Операционная часть в свою очередь делится на код операции (КОП) и модификаторы. Модификаторы располагаются после КОП и указывают типы операндов и способы их адресации.

Операнды могут быть указаны:

- в самой команде (непосредственная адресация);

- в одном из регистров МП, тогда в команде указывается этот регистр (регистровая адресация);

- в оперативной памяти по адресу, который тем или иным способом описан в команде (прямая, базовая или индексная адресация;

- некоторые команды требуют, чтобы один из операндов находился в определенном регистре (например, в аккумуляторе AX), тогда операнд не указывается в команде (подразумеваемая адресация).

Команды в языке ассемблера (ЯА) МП фирмы Intel в основном двухоперандные (двухадресные). Результат выполнения команды обычно помещается на место первого операнда.

Форматы команд разнообразны, т.к. для каждого операнда может использоваться собственный способ адресации. Рассмотрим основные форматы двухадресных команд.

В общем виде команду можно записать в виде:

Op1 := op1 ¤ op2,

Где ¤ – какая-то операция, заданная кодом операции.

Например, команда ЯА пересылки данных из op1 в op2 имеет вид

Mov op1, op2

и выполняет копирование содержимого op2 в op1, т.е.

op2 := op1.

В данной команде

op1 – может быть регистром или ячейкой памяти,

op2 - может быть регистром, ячейкой памяти или непосредственным операндом.

Заметим, что содержимое op2 не изменяется.

Отметим также основные правила записи команд ЯА:

- мнемоника (имя) команды отделяется от операндов хотя бы одним пробелом;

- операнды разделяются запятой;

- после точки с запятой в той же строке можно поместить комментарий.

Рассмотрим форматы команд и методы адресации на примере команды пересылки, описанной выше.

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