
Машинные команды
Лекция 8
Машинные команды представляются в двоичном коде
Каждая команда реализуется при помощи опр. Лог. Схем. В зависимости от того, какие будут команды, будут те или иные лог. Схемы. Каждая команда реализуется при помощи многих схем.
Компоненты команды
Однозначная интерпретация процессором!
Основные компоненты программы:
КОП (код операции) + *
В современном пентиуме несколько сотен КОП
Операнд – то, над чем производится операция. (х, у)
Каждый операнд – адрес некого значения.
3 типа адресов
Адрес в ячейке памяти (озу = RAM. Random access memory=память произвольного доступа)
Адрес регистра ЦП регистр позволяет работать быстрее <=100 для временного хранения инфы.
Адрес регистров устройств ввода-вывода. Любое устройство ввода-вывода имеет свою память.
В зависимости от типов процессоров кол-во операндов может быть различно.
2оп – двухадресная.
АС – аккумулятор, туда помещаются промежуточные рез-лы вычислений.
КОП О1 О2 О3
О3 = О1 КОП О2 Если 3-х адресная команда, то О1 и О2 аргументы, а в О3 помещается результат
КОП О1 О2 АС = О1 КОП О2
КОП О1 АС = О1 КОП АС
Нульадресные команды Стек (магазин) – базовый тип данных, используемый в инф. Технике. Работает по принципу LIFO (Last in First Out)
5 |
4 |
3 |
2 |
1 |
вершина
Основание Стека
Вход: 1 2 3 4 5
Выход: 5 4 3 2 1
Стек располагается в оперативной памяти
Операндов нет, т.к. действия происходят в вершине стека
FIFO – «очередь к кассе» ( каков вход, таков и выход ) Наиболее часто используются двух и одноадресные команды
Лекция 9
Источник и приемник данных
Оперативная память, регистр ЦП, вершина стека
Режим адресации.
Направление передачи данных (из памяти в ЦП, из ЦП в память…)
Ячейка может находится на жестком диске или в КЭШ-памяти.
Команды преобразования
Преобразуют данные из 1 формата в другой.
Логические команды
Производят логические операции
Команды управления выполнением программ
Команды перехода (условные, безусловные)
Условия реализуются с помощью «флагов» (флаговых битах). Эти биты находятся в специальном флаговом регистре.
CF – флаг переноса
PF – флаг четности. 1 – четное число, 0 – нечетное
ZF (zero flag) – 0 – число равно 0, 1 – число не равно 0
SF (sight flag) – 1 – число неотрицательно, 0 – число отрицательно
OF (overflow flag) переполнение. Равен 1 при переполнении
If (interruption flag) – 1, когда имеет место прерывание.
Вызов подпрограммы
Операции представлены в таблице на языке Ассемблера (автокоде) для intel
Язык Ассемблера позволяет представлять машинные команды в симв. Виде.
Тип операции (команды) |
Наименование операции |
Символ операции (ассемблер. intel) |
Пример |
Описание |
Передачи данных |
Перемещение |
MOV |
MOV x,y
|
Передача машинного слова (4 байта) или блока данных от источника к приемнику. |
|
Сохранение |
STOR |
STOR x |
Содержимое регистра процессора сохраняется в ячейке памяти Х |
|
Загрузка |
LOAD |
LOAD х |
Передача данных из адреса памяти Х в регистр ЦП |
|
Загрузка адреса |
LEA |
LEA x,y X=адрес у |
Значением Х будет не значение У, а его адрес |
|
Очистка |
CLR |
CLR |
Передает в регистр ЦП одни нули. |
|
Установка |
SET |
SET |
Передает в регистр ЦП слово из одних единиц. |
|
Запись в Стек |
PUSH |
PUSH x |
Содержимое ячейки памяти по адресу х помещается в вершину стека |
|
Извлечение из Стека |
POP |
POP x |
Запись из вершины стека в ячейку памяти по адресу Х |
Арифметические операции |
Сложение |
ADD |
ADD x,y |
X=x+y. Складываем и результат записываем в Х |
|
Умножение |
MUL |
MUL x,y |
X=x*y Умножаем и результат записываем в х |
|
Деление |
DIV |
DIV x,y |
X=x/y Делим и результат записываем в х |
|
Положительное приращение |
INC |
INC x |
Х=Х+1
|
|
Отрицательное приращение |
DEC |
DEC x |
Х=х-1 |
Логические операции. Выполняются поразрядно |
Не |
NOT |
NOT x |
Х = НЕ х |
|
И |
AND |
AND x,y |
X=x^y |
|
ИЛИ |
OR |
OR x,y |
X=x v y |
|
Искллючающее или |
XOR |
XOR x,y |
X=x / y (штрих шеффера)
|
|
Сравнение |
CMP |
CMP x,y |
Арифметическое или логическое сравнение. Резл. Записываются во флаговый регистр |
|
Логический сдвиг |
SHR SHL |
SHR x,y SHL x.y |
Влево Вправо Берем у, делаем сдвиг и помещаем в Х
|
|
Арифметический сдвиг |
SAR SAL |
SAR x,y |
X= сдвиг у
|
|
Циклический сдвиг |
ROR ROL |
ROL x,y |
Х=сдвиг у |
Операции ввода-вывода |
Ввод |
IN |
IN A |
Передача данных из регистра А устройства ввода-вывода (порта) в регистр ЦП |
|
Вывод |
Out |
OUT A |
Передача данных из регистра ЦП в регистр устройства ввода-вывода |
Управления выполнением программы |
Безусловный переход |
JMP |
JMP A |
Безусловный переход на команду по адресу А |
|
Вызов подпрограммы |
CALL |
CALL A |
Вызов подрограммы по адресу А В момент вызова сохраняется вся инфа о текущем состоянии главной программы, откуда произошел вызов |
|
Возврат из Подпрограммы |
RET |
RET |
Обеспечивает возврат из вызванной подпрограммы и восстановление состояния вызвавшей программы |
|
Остановка |
HLT |
HLT |
Принудительная остановка программы |
|
Ожидание |
WAIT |
WAIT |
Программа приостанавливается, пока не будет выполнено некое условие.
|
|
Условный переход |
JE
JNE
JG
JL JGE
JLE |
JE A
JNE A
JG A |
Сначала работает CMP x,y (сравнение) В зависимости от рез-тов сравнения устанавливаются различные флаги
Переход производится, если рез-т. Сравнения x=y
Переход, если x!=y
Переход, если x>y
X<y Переход, если x>=y
X<=y
|
|
|
|
|
|