- •Структура мп ix86 фирмы Intel
- •Регистры общего назначения (регистры данных)
- •Регистры-указатели
- •Регистры сегментов (сегментные регистры)
- •Указатель команд и регистр флагов
- •Сегментация памяти
- •Структура команд мп
- •Формат «Регистр-регистр» (Рг-Рг) – 2 байта
- •Формат «Регистр-память» (Рг-яп) – 2÷4 байта
- •Формат «Регистр-непосредственный операнд» (Рг-но) – 3÷4 байта
- •Формат «Память-непосредственный операнд» (яп-но) – 3÷6 байтов
- •Представление данных в пэвм
- •Целые числа
- •Двоично-десятичные числа (bcd)
- •Символьные данные
- •Вещественные данные
- •Система команд мп семейства iх86 фирмы Intel
- •Команды сложения и вычитания
- •Дополнительные команды
- •Команды умножения и деления
- •Команды преобразования длины
- •Стековые команды
- •Доступ к элементам стека с помощью регистра вр
- •Команды передачи управления
- •Близкие и далекие переходы.
- •Адресация в переходах.
- •Конструкции языка Ассемблера Литература
Сегментация памяти
Память трактуется как одномерный массив байтов, каждый байт ассоциируется с двоичным адресом (номером), который называется физическим адресом.
Физический адрес – это 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 не изменяется.
Отметим также основные правила записи команд ЯА:
- мнемоника (имя) команды отделяется от операндов хотя бы одним пробелом;
- операнды разделяются запятой;
- после точки с запятой в той же строке можно поместить комментарий.
Рассмотрим форматы команд и методы адресации на примере команды пересылки, описанной выше.