1 Лекция 1 Система команд универсальных микропроцессоров Лектор: Люличева И.А.

Презентация:



Advertisements
Похожие презентации
1 Лекция 1 Система команд универсальных микропроцессоров Лектор: Люличева И.А.
Advertisements

Архитектура ЭВМ Практика 4. Программы с ветвлениями.
С ИСТЕМА КОМАНД ЕОМ. С ТРУКТУРА ТА ФОРМАТИ КОМАНД.
Регистры общего назначения – сумматор, регистр данных, адресный регистр и т.д. Арифметико- логическое устройство Устройство управления
Числа со знаком и дополнительный код Синтаксис FASM Для записи отрицательного числа в программе на ассемблере используется символ -, например: x db -5.
Тема 2. Способы адресации и система команд МП. Непосредственная адресация Суть способа. Требуемые данные (#data ̶ непосредственный операнд, константа)
Лекция 6. Способы адресации в микропроцессорных системах.
Микропроцессоры Лекция 6. СТРУКТУРА ЭЛЕМЕНТАРНОГО МИКРОПРОЦЕССОРА (ЭМП) Основным устройством всех цифровых систем (ЦС) является центральный процессор.
Микропроцессорные системы ЭФУ АРХИТЕКТУРА 8-РАЗРЯДНОГО МИКРОПРОЦЕССОРА.
Архитектура ЭВМ Практика 3. Линейные программы на языке ассемблера.
Микропроцессоры и микропроцессорные системы. 1. Пересылка данных MOV приемник, источник- Пересылка данных Базовая команда пересылки данных. Копирует содержимое.
Арифметическиеи логические команды языка Ассемблер. Битовые команды.
1 Лекция 2 Система команд и примеры программ для МП 8086 Лектор: Люличева И.А.
Система команд процессора. Система команд процессора включает в себя четыре основные группы команд: команды пересылки данных; арифметические команды;
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 6 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Микропроцессоры Архитектура ЭМП Лекция 9. Архитектура ЭМП В предыдущем параграфе мы изучили схему выводов и их назначение у типового микропроцессора.
Учебный курс Принципы построения и функционирования ЭВМ Лекция 10 Типы адресации. Стеки. Процессоры. ОЗУ. профессор ГУ-ВШЭ, доктор технических наук Геннадий.
Электронная энциклопедия. Содержание Архитектура ПК Системы счисления.
Программирование на языке низкого уровня Ассемблер.
Intel архитектура IA16 Основа большинства современных компьютеров.
Транксрипт:

1 Лекция 1 Система команд универсальных микропроцессоров Лектор: Люличева И.А.

2 Рассматриваются вопросы Краткий обзор МП Форматы команд (3 слайда), Группы команд (24 слайда), Виды адресации (3 слайда), Примеры программ (слайды - доска),

3 Классификация МП Прогресс в развитии микропроцессоров идет в условиях жесткой конкуренции, в лидеры выходят те или другие фирмы. На сегоднешний день безусловными лидерами являются такие фирмы как Intel, AMD, Motorola, Analog Device и др. Каждая из них занимает свою нишу на рынке цифровых устройств. В данном курсе мы рассматриваем несколько направлений развития вычислительной и МП техники.

4 Классификация МП Первое напавление - это универсальные МП, на базе которых работают как простые домашние ПК так и современные серверы сетей коммутации пакетов; второе - это универсальные микроконтролеры (МК), которые используются практически во всех сферах современной жизни; третье - специализованые МП и МК, которые очень широко используются в телекомуникационных системах.

5 Микропроцессор 8086 К наиболее важным аппаратурным особенностям шестнадцатиразрядного микропроцессора 8086 (К1810ВМ86) относятся: Развитая регистровая структура; (8 Регистроы общего назначения – РОНов, 4 сегментных регистра и др.) принцип выполнения команды с одновременной выборкой следующей, что повышало пропускную способность системной магистрали (хорошо); распределенное микропрограммное устройство управления; мультиплексированная шина адреса-данных (плохо!);

6 Микропроцессор 8086

7 Система команд универсальных микропроцессоров Система команд любого процессора характеризуется форматами команд (3 слайда), группами команд (знать обязательно!) и видами адресации. Форматы команд зависят от архитектуры МП, вида адресации, а также от разрядности данных или адреса конкретного МП.

8 Форматы команд универсаль- ных микропроцессоров В МП с RISC-архитектурой различных форматов команд немного. В идеале ВСЕ команды имеют одинаковый формат. Например – 3 или 4 байта.В реальности даже в МП RISC-архитектурой используется 2-3 формата. В МП с CISC-архитектурой используются самые разнообразные форматы команд. Знать их все не обязательно, но полезно понимать, от ЧЕГО они зависят.

9 Форматы команд универсаль- ных микропроцессоров Как пример системы команд универсальных МП, рассмотрим систему команд процессора Она содержит 113 мнемоник, и допускает использование разнообразных режимов адресации. Формат команды зависит операндов и вида адресации. Команды имеют длину от 2 до 6 байтов. Каждая команда состоит из кода операции (КОП), идентифицирующего ее, и, если нужно, одного или двух операндов. Чем больше операндов и чем они длиннее, тем больше байтов занимает команда и тем больше времени нужно для передачи ее из памяти в процессор.

10 Форматы команд универсаль- ных микропроцессоров Всего же в системе команд процессора 8086 насчитывается более 3800 команд вместе со всеми их вариантами, а в системе команд МП – вдвое больше. Чтобы минимизировать общее число бит в команде, команды процессора 8086 имеют не более двух операндов, причем одним обязательно является регистр, поскольку адреса памяти и портов ввода- вывода требуют значительно больше бит. Ограничение двумя операндами, естественно, уменьшает гибкость многих операций. Некоторые команды (например INC и DEC) имеют один операнд.

11 Виды адресации универсаль- ных микропроцессоров Мощность системы команд процессора зависит в большой мере от количества видов адресации, которые он использует. Система команд МП с CISK-архитектурой насчитывает не менее чем десять видов адресации. 1. Неявная – когда в коде команды никак не указанные операнды. Примеры: DAA, STOSW 2. Прямая регистровая – один или два операнда находятся в регистрах. Примеры: INC di, DEC cx, ADD ах, bx

12 Виды адресации универсаль- ных микропроцессоров 3. Непосредственная – один из операндов в регистре, второй – непосредственно после кода операции. Примеры: ADD di, 160; AND ах, C5H 4. Прямая к памяти или портам. Один из операндов в регистре, адрес второго прямо в команде. Примеры: MOV ах, alfa; IN ах,40H; IN al,40h.

13 Виды адресации универсаль- ных микропроцессоров 5. Косвенная – существует несколько вариантов. Например к памяти и к портам. Примеры: IN ах, dx. 6. Индексная MOV ах, [si], ADD ах, [di+2] 7. Базовая MOV ах, [bp] ADD ах, [bx+2] Базовая и индексная адресации могут быть со сдвигом, то есть адрес ячейки памяти в сегменте) вычисляется как сумма регистра адреса и сдвига. Формирование физического адреса (20- или 24- разрядной) из логической (32-разрядной) – функция сумматора адресов.

14 Виды адресации универсаль- ных микропроцессоров 8. Базово-индексная Используется для обработки двухмерных массивов. Пример: MOV cx, [si+bx+2] 9. Стековая - с использованием указателя стека SP (см. слайд 15). Примеры: PUSH cx, Call delay, RET data. 10. Короткая или длинная адресация в командах перехода (см. слайд 30). Существуют к тому же сочетания разных видов адресации, например, косвенной и непосредственной

15 Группы команд универсаль- ных микропроцессоров По функциональному назначению в МП 8086 выделяют 6 групп команд: 1. Команды передачи данных. 2. Команды арифметических операций. 3. Команды логических операций и сдвигов. 4. Команды передачи управления. 5. Цепочечные команды. 6. Команды управления микропроцессором.

16 Группы команд универсаль- ных микропроцессоров Первая группа команд - команды передачи данных Команды передачи данных разделяют на 3 подгруппы: общие команды передачи данных; стековые команды; команды ввода-вывода; Команды передачи данных как правило не модифицируют состояния регистра флагов.

17 Группы команд универсаль- ных микропроцессоров Самой распространенной среди команд передачи данных является команда MOV. Она имеет следующей обобщенной вид: MOV dst, src Первым указывается операнд-получатель, а вторым – операнд-источник. Одним из операндов обязательно должен быть регистр общего назначения. Команда осуществляет передачу: регистр - регистр, регистр - память, память - регистр, непосредственные данные - регистр, непосредственные данные - память, регистр - сегментный регистр, память - сегментный регистр, сегментный регистр - регистр, сегментный регистр - память.

18 Группы команд универсаль- ных микропроцессоров Являются допустимыми следующие форматы команды: MOV mem/reg1, mem/reg2 MOV mem/reg, data MOV sreg, mem/reg MOV mem/reg, sreg Примеры MOV AX,DX MOV AX,0B800H MOV AX,ES:[160]

19 Группы команд универсаль- ных микропроцессоров В отличие от ОБЩИХ команд передачи данных команды работы со стеком – парные. Каждая команда занесения данных в стек PUSH имеет соответствующую ей команду извлечения из стека POP. Для адресации вершины стека используется регистры SS:SP. Все стековые команды манипулируют только словами и сопровождаются автоматической модификацией указателя стека: при занесении в стек производится декремент, а при извлечении из стека - инкремент указателя стека SP. До выполнения стековых команд регистры SP и SS должны быть инициализированы. Команды POSHF и POPF предназначены для временного запоминания в стеке и последующего возобновления из стека содержания регистра флагов.

20 Группы команд универсаль- ных микропроцессоров Формат команд: PUSH mem/regPOP mem/reg PUSH sregPOP sreg PUSHFPOPF Примеры: PUSH CX ….. Фрагмент программы POP CX

21 Группы команд универсаль- ных микропроцессоров Команда ввода IN и команда вывода OUT. Команда IN загружает данные из заданного порта в аккумулятор(Ах или AL), а команда OUT выполняет передачу из аккумулятора в порт. Для портов ввода- вывода в диапазоне 00-FF можно использовать прямую укороченную адресацию, а остальные порты в диапазоне 100-FFFF можно адресовать только косвенно через регистр DX. Формат команд: IN ас,portOUT port,ac(прямая укороченная адресация) IN ас,DXOUT DX,ac(косвенная адресация)

22 Группы команд универсаль- ных микропроцессоров Вторая группа - арифметические команды Арифметические операции выполняются над целыми числами четырех типов: беззнаковыми двоичными, знаковыми двоичными, упакованными десятичными и не упакованными десятичными. Длина чисел может быть 8 или 16 бит. Диапазоны чисел: беззнаковое 8-битовое: , беззнаковое 16-битовое: , знаковое 8-битовое: , знаковое 16-битовое: Команды арифметических операций влияют на флаги OF, SF, ZF, AF, PF и CF.

23 Группы команд универсаль- ных микропроцессоров Команда ADD позволяет производить сложение 8- или 16-битовых двоичных чисел в режиме регистр-регистр, регистр-память и память-регистр. Общее представление команды имеет вид ADD dst, src При этом первый операнд складывается со вторым и результат операции замещает первый операнд. Формат команды: ADD mem/reg1,mem/reg2 (Например ADD AX,BX). ADD mem/reg,data (Например ADD DI,160)

24 Арифметические команды Команда SUB позволяет производить вычитание 8- или 16-битовых двоичных чисел. Общее представление команде имеет вид SUB dst, src второй операнд отнимается из первого и резуль- тат операции замещает первый операнд. Формат команды: SUB mem/reg1,mem/reg2 SUB mem/reg,data (Например SUB DI, 160)

25 Арифметические команды Команда ADC выполняет сложение с переносом: в отличие от команды ADD в операции принимает участие флажг CF, значение которого добавляется к младшему биту результата. Формат команды: ADC mem/reg1,mem/reg2 ADC mem/reg,data Команда SBB выполняет вычитание с перенесением: в операции вычитание принимает участие флажок CF, значение которого отнимается из младшего бита результата вычитания операндов. Формат команды: SBB mem/reg1,mem/reg2 SBB mem/reg,data

26 Арифметические команды Команда INC позволяет увеличить на 1 содержание какого-нибудь общего регистра или ячейки памяти. Формат команды: INC mem/reg, (Например INC ах, INC [DX]) Команда DEC позволяет уменьшить на 1 содержание какого-нибудь общего регистра или ячейки памяти. Формат команды: DEC mem/reg (Например DEC CX )

27 Арифметические команды Команда NEG изменяет знак числа, что находится в регистре или ячейке памяти, на противоположный. Формат команды: NEG mem/reg Команда сравнения CMP выполняет вычитание второго операнда из первого, но нигде не запоминает результат операции и влияет только на состояние флажков. Формат команды: CMP mem/reg1,mem/reg2 CMP mem/reg,data Команда десятичной коррекции для составления DAA выполняет коррекцию суммы, полученной в результате выполнения команд ADD и ADC и должна следовать непосредственно за ними. Команда десятичной коррекции для вычитания DAS выполняет коррекцию разницы, полученной в результате выполнения команд SUB и SBB и должна следовать непосредственно за ними. Форматы команд: DAA, DAS

28 Арифметические команды Микропроцессор 8086 имеет две команды умножения: для беззнаковых и для знаковых двоичных чисел. Умножение десятичных чисел требует использования команд коррекции. Команда умножения беззнаковых целых чисел MUL выполняет умножение операнда, на содержание аккумулятора. При операции над байтами функции аккумулятора выполняет регистр AL, а 16-битовый результат операции помещается в регистр АХ. При операции над словами функции аккумулятора выполняет регистр АХ, а результат длиной 32 биты формируется в регистрах DX (старшее слово) и АХ (младшее слово). Формат команды: MUL reg, MUL mem

29 Арифметические команды Команда IMUL аналогичная команде MUL, но сомножители и произведение интерпретируются как знаковые двоичные числа в дополнительном коде. Формат команды: IMUL reg, IMUL mem Микропроцессор 8086 имеет две команды распределения: для беззнаковых и для знаковых двоичных чисел. Распределение десятичных чисел также требует использования специальных команд коррекции. Команда распределения беззнаковых чисел DIV производит распределение содержания аккумулятора и его расширения на содержание операнда, что адресуется. При распределении 16-битового делимого на 8-битовый делитель делимое помещают в регистр АХ. В результате выполнения операции частное формируется в регистре AL, а остаток - в AH. При распределении 32-битового делимого на 16-битовый делитель старшая часть делимого помещается в регистр DX, а младшая - в АХ. В результате выполнения операции частное формируется в регистре АХ, а остаток - в DX.

30 Логические команды 3 группа - команды логических операций и сдвигов Логические операции представлены командами NOT (инверсия), AND (конъюнкция), OR (дизъюнкция), XOR (исключающее ИЛИ) и командой TEST, которая выполняет логическое умножение операндов, но не изменяет их значений. Все логические операции являются поразрядными, то есть выполняются независимо для каждого бита.

31 Логические команды Бинарные команды AND, OR, XOR и TEST влияют на флажки OF, SF, ZF, PF и CF. Унарная операция NOT не влияет на состояние флажков. Форматы команд: AND mem/reg1,mem/reg2 AND mem/reg,data OR mem/reg1,mem/reg2 OR mem/reg,data XOR mem/reg1,mem/reg2 XOR mem/reg,data TEST mem/reg1,mem/reg2 TEST mem/reg,data NOT mem/reg

32 Команды сдвигов Команды сдвигов подразделяются на команды простых сдвигов и команды циклических сдвигов. Циклические сдвиги влияют только на флаги OF и CF, а простые изменяют пять флажков: OF, SF, ZF, PF и CF. Команды сдвигов могут работать как с байтами, так и со словами. Команды ROL и ROR реализуют простой циклической сдвиг влево и вправо соответственно, помещая значение из бита, что выдвигается, в бит, что освобождается. Команды RCL и RCR называются командами циклического сдвига влево и вправо через перенос, поскольку флажок CF расширяет сдвигаемый операнд на один бит. Таким образом, значение с CF загружается в бит, что освобождается, а бит, что выдвигается, помещается в CF.

33 Команды сдвигов Команды SHL и SHR реализуют сдвиги влево и вправо соответственно на произвольное число разрядов. Для них характерно, что в бит, что освобождается, загружается нуль, а бит, что выдвигается, теряется. Команды SAL и SAR предназначены для арифметического сдвига влево и вправо. Арифметическое сдвиг вправо отличается от логического сдвига тем, что знаковый бит не сдвигается, а дублируется в соседнем правом бите, храня тем самым знак числа. Арифметический сдвиг влево эквивалентнен логическому, поэтому мнемоника SAL и SHL помечает одну и ту же машинную команду. Команды арифметического сдвига в сущности реализуют умножение и деление чисел без знака на степень числа 2.

34 Команды передачи управления Сегментная организация программной памяти определяет две основные разновидности команд передачи управления. Передача управления в пределах текущего сегмента кода называется внутрисегментной - при этом модифицируется только регистр IP и адрес перехода может быть представлен одним словом. Такая передача называется ближней (тип NEAR), а ее вариант с сокращенным диапазоном адресов переходов - короткой. Передача управления за пределы текущего сегмента кода называется межсегментной или дальней (тип FAR) - при этом необходимо модифицировать содержание регистров IP и CS и адрес перехода представляется в двух словах (сегмент: смещение).

35 Команды передачи управления Эта группа команд подразделяется на команды безусловных переходов, условных переходов, вызова и возврата из п.пр, управления циклами и команды прерываний. Команды передачи управления (за исключением команды IRET) не изменяют состояние регистра флагов. Рассмотрим каждую подгруппу отдельно.

36 Команды передачи управления Команды безусловного перехода имеют общую мнемонику JMP. Команда короткого безусловного перехода содержит во втором байте сдвиг, который интерпретируется как знаковое целое. Диапазон значений байта сдвига составляет Если сдвиг позитивен, осуществляется переход вперед, а если негативное - переход назад. Команда ближнего безусловного перехода может либо непосредственно содержать 16-битовый сдвиг, либо непрямой адрес 16-битового сдвига. Диапазон сдвига составляет байт относительно адреса команды, что находится после команды JMP. Команда дальнего безусловного перехода реализует прямой и непрямой межсегментни переходы. Форматы команд: JMP dispL- короткий переход JMP disp- ближний прямой переход JMP mem/reg - ближний непрямой переход JMP addr- дальний прямой переход JMP mem- дальний непрямой переход

37 4. Команды передачи управления В системе команд процессора 8086 есть 19 двухбайтовых команд условных переходов. При выполнении этих команд анализируется некоторое условие, закодированное текущими состояниями флагов, и если оно выполняется, то осуществляется переход, а если нет, то выполняется следующая команда. Все условные переходы являются короткими. Некоторые команды для удобства программирования могут иметь несколько разных мнемонических обозначение. Мнемонические обозначения команд: 1) Команды для работы с беззнаковыми числами: JA/JNBE - переход, если больше; JAE/JNB/JNC - переход, если больше или ровно; JB/JNAE/JC - переход, если меньше; JBE/JNA - переход, если меньше или ровно. 2) Команды для работы со знаковыми числами: JG/JNLE - переход, если больше; JGE/JNL - переход, если больше или ровно; JL/JNGE - переход, если меньше; JLE/JNG - переход, если меньше или ровно; JNS - переход, если больше нуля; JS - переход, если меньше нуля.

38 4. Команды передачи управления 3) Команды, общие для знаковых и беззнаковых чисел: JE/JZ - переход, если равно / переход, если нуль; JNE/JNZ - переход, если не равно / переход, если не нуль; JNO- переход, если нет переполнения; JO- переход, по переполнению. 4) Другие команды: JCXZ- переход, если содержание регистра CX ровный нулю; JNP/JPO - переход при отсутствии четности; JP/JPE - переход по четности. Форматы команд такие же, как у короткого безусловного перехода.

39 4. Команды передачи управления Команды управления циклами Три команды управления циклами применяются для организации программных циклов. У них предусматривается использование регистра CX как счетчик цикла. В поле операнда команд управления циклами находится метка первой команды цикла. Диапазон переходов этих команд составляет байт от следующей команды. Команда LOOP выполняет декремент регистра CX и, если содержание CX не ровный нулю, происходит переход к началу цикла. Иначе выполняется следующая по порядку команда.

40 4. Команды передачи управления Примеры применения команд передачи управления. Подпрограммы задержки. MOV CX, 1000 M1: DEC CX JNZ M1 MOV CX, 1000 M1: LOOP M1

41 4. Команды передачи управления Команды вызова и возвращения из подпрограммы Команда вызова подпрограммы CALL передает управление с автоматическим сохранением адреса возврата в стеке. При переходе к подпрограмме необходимо временно запомнить адрес команды, что находится после команды CALL. Этот адрес называется адресом возвращения. После того, как подпрограмма закончит свои действия, завершающая ее команда возвращения RET передает управление по адресу возвращения, что запомнит. Адрес возвращения запоминается в стеке. Вызовы могут быть внутрисегментными (тип NEAR) или межсегментными (тип FAR). В первом случае подпрограмма, что вызывается, находится в текущем сегменте кода, а во втором - в произвольном.

42 6. Команды управления процессором Команды этой группы обеспечивают программное управление разными функциями процессора. Для МП 8086 они делятся на команды установки флагов и команды синхронизации (NOP и др). В МП 80286, и выше эту группу команд добавилось от 10 до 20 мнемоник.

43 Вопросы для самоконтроля 1.Особенности форматов команд МП Перечислите группы команд МП Приведите примеры использования команд из разных групп. 4.Перечислите виды адресации МП Приведите примеры использования команд с прямой регистровой и прямой к портам адресацией. 6.Приведите примеры использования команд с непосредственной и неявной адресацией. 7.Приведите пример программы циклического опроса 20 портов и укажите использованные виды адресации