Структура команд
Имеется две формы представление машинных команд: · на языке программирования машинного уровня (ассемблере), · на аппаратном уровне с использованием битовых кодов. Перекодировку команд производит ассемблер совместно с рядом программ операционной системы. Команды на языке ассемблера. На языке ассемблера команды содержат символьный код операции и один или два адреса. Команды могут быть одноадресными или двухадресными. Первый адрес в команде– адрес приемника, второй – источника. Оба адреса могут быть адресами РОНов, Адресом оперативной памяти может быть только один. Исключением является: · команда MOVS – команда строковой передачи данных память – память (адреса ячеек памяти задаются содержимым пар регистров базы/индекс) · команды работы со стеком, которые перемещают данные из памяти в стек, который также находится в памяти. Адрес оперативной памяти может задаваться прямым адресом (offset) или компонентами (D, X, disp). Примеры команд на уровне ассемблера: 1. mov ax, bx; копирование в ax содержимого bx, 2. mov ax, offset 356; копирование в ax содержимого ячейки памяти по адресу 356, 3. mov ax, [СS: bх +356]; копирование в ax содержимого ячейки памяти в сегменте CS по адресу, равному сумме содержимого регистра bp и смещения – 356, 4. mov ax, [bp +si+356]; копирование в ax содержимого ячейки памяти по адресу, равному сумме содержимого регистров bp, si и смещения 356, 5. mov byte ptr z, 15; копирование в ax содержимого ячейки памяти по адресу z (конструкция byte ptr z уточняет, что адрес z является адресом одного байта, а не слова). 6. Машинная кодировка команд IA – 16. МП IA-16 используют команды переменного формата от 1 до 7 байт. Кодировка команд производилась с учетом частоты использования команды в типовых программах. Команда может иметь (рис. 2.5.): · возможно, префикс (1 или 2 однобайтных префиксов), · код адресации (1 байт), · возможно, постбайт (1байт), · возможно, байты смещения – disp (1 или 2 байта), · возможно, байты непосредственного операнда (1 или 2 байта).
Элементы команды: Префикс. Это необязательный байт, модифицирующий процедуру выполнения команды. МП IA – 16 предусматривает использование двух префиксов: · повторения, · замены сегмента памяти, используемого по умолчанию (только для данной команды). Префикс повторения. ВМП IA – 16 для обработки строк данных используются обычные команды, но с использованием префикса повторения. Префикс повторения обеспечивает повторные действия над элементами строк данных. Предусмотрены два варианта префикса повторения, отличающиеся заданием конца повторений: количеством повторений: 1. подсчетом заданного числа повторения (в регистре cx), 2. кодом условия результата очередного повторения операции в регистре флагов.
|