- •Предисловие
- •1.2. Можно ли самому построить эвм?
- •Какую микро-эвм мы будем строить?
- •2.1. Основные блоки микро-эвм
- •2.2. Содержимое центрального блока
- •2.3. Какую микро-эвм мы будем называть "простейшей"?
- •Некоторые общие сведения о работе микро-эвм
- •3.1. Данные и программы
- •3.2. Основные логические операции
- •3.3. Основные арифметические операции
- •Архитектура
- •И компонентов
- •4.1. Конструктивное оформление пм-эвм
- •4.2. Основные связи и структура шин
- •4.3. Общая функциональная схема пм-эвм
- •4.4. Функциональная схема микропроцессора
- •4.5. Как микропроцессор выполняет команду?
- •4.6. Система команд и способы адресации
- •4.6.1. Группа команд пересылки данных
- •4.6.2. Группа арифметических команд
- •4.6.3. Группа логических команд
- •4.6.4. Группа команд переходов
- •4.6.5. Группа команд управления и работы со стеком
- •4.7. Программирование пм-эвм
- •Используемые микросхемы
- •5.1. Общие вопросы
- •5.3. Временные диаграммы
- •5.4. Микросхемы, реализующие логические функции
- •5.5. Микросхемы, содержащие элементы памяти
- •Структура и функционирование микропроцессорного блока
- •6.1. Микропроцессор кр580ик80а
- •6.2. Синхронизация
- •6.3. Шины адреса, данных и управления
- •7.2. Структура памяти
- •7.3. Клавиатура и индикация
- •7.4. Программа-монитор
- •7.5. Инструкция по работе на микро-эвм
- •Сборка и отладка
- •8.1. Этапы сборки и проверки узлов
- •8.2. Статический аппаратный эмулятор
- •8.3. Отладка в рабочем режиме
- •8.4. Подготовка пм-эвм к работе
- •9.1. Программируемый калькулятор
- •9.3. Сбор и обработка данных
- •9.4. Реализация диалогового режима
- •Расширение возможностей
- •10.1. Клавиатура и индикация
- •10.2. Внешняя память
- •10.3. Накопитель на базе бытового магнитофона
- •10.4. Дисплей на базе бытового телевизора или осциллографа
- •10.5. Простой графический дисплей
- •10.6. Звуковая сигнализация
- •10.7. Другие возможности пм-эвм
- •Приложения
- •Список рекомендуемой литературы
4.6.1. Группа команд пересылки данных
В этой группе встречаются команды, пересылающие содержащиеся в них данные в регистры и в память, а также команды пересылки данных между регистрами и между регистрами и памятью. Рассмотрим команды пересылки данных из одного регистра МП в другой, из регистра МП в ячейку ОЗУ и из ячейки ОЗУ в регистр МП. В мнемонике команд, используемых в данной книге, порядок пересылки данных всегда предполагается в направлении от крайнего правого операнда к следующему слева операнду, отделенному от первого запятой.
Команда MOV rt, r2. Эта команда предназначена для пересылки данных из регистра S (источник, или г2) в регистр D (приемник, или rt). В качестве регистра-источника и регистра-приемника может выступать любой из регистров В, С, D, H, L или аккумулятор А. Содержимое регистра-источника при этом не меняется. В регистре-приемнике просто появляется копия содержимого регистра-источника. На рис. 4.8,а приведен формат этой команды. Чтобы получить конкретную команду, необходимо вместо символов D и S в формате команды рис. 4.8,я проставить из табл. 4.4 коды соответствующих регистров. Например, команда 01 010 000 В пересылает данные из регистра В в регистр D (в регистре D после выполнения команды будут содержаться т© же данные, что и в регистре В). В восьмеричной системе это число (код команды) будет представлено как 120Q (см. список команд в приложении 1).
Команда MOV М, г. Эта команда может быть получена из предыдущей заменой символов D кодом М из табл. 4.4. Команда пересылает данные из регистра-источника в ячейку памяти по адресу, указанному в регистровой паре Н, L. Регистром-источником может служить любой регистр В, С, D, H, L или аккумулятор А. После выполнения команды в ячейке памяти появится копия содержимого регистра-источника. Содержимое самого регистра не изменится. Код конкретной команды получается фиксацией кода регистра-источника (рис. 4.8,6).
Рис. 4.8. Примеры размещения некоторых команд пересылки данных в байтах
Рис. 4.9. Примеры размещения некоторых арифметических команд в байтах
Команда MOV г, М. Команда также получается из первой заменой символов S кодом М из табл. 4.4. Команда пересылает данные из ячейки памяти по адресу, указанному в регистровой паре Н, L, в регистр-приемник, в качестве которого может использоваться любой регистр В, С, D, H, L или аккумулятор А. После выполнения команды в регистре-приемнике появляется копия содержимого ячейки памяти (рис. 4.8,в).
На этом закончим рассмотрение примеров команд этой группы. Отметим лишь, что все команды из группы пересылки данных на значения флагов влияния не оказывают.
4.6.2. Группа арифметических команд
Команды этой группы предназначены для выполнения арифметических операций над данными, хранимыми в регистрах и ячейках памяти. Эти команды в отличие от команд предыдущей группы, как правило, оказывают влияние на значения разрядов флагового регистра, поскольку при выполнении арифметических операций меняются знаки используемых чисел, возникают сигналы переноса, появляются нулевые результаты и т. п. Рассмотрим примеры размещения в байтах некоторых команд этой группы.
Команда ADD r. Эта команда выполняет сложение содержимого регистра-источника S с содержимым аккумулятора А. Результат сложения помещается в аккумулятор. Чтобы получить конкретную команду, необходимо в формате команды вместо символов S проставить код регистра-источника из табл. 4.4. Например, команда 10 000 001 производит сложение содержимого регистра С с содержимым аккумулятора А. Двоичный код этой команды 10 000 001 В; в восьмеричной системе это число представляется кодом 201Q. Это представление является восьмеричным кодом команды ADD С, выполняющей указанное выше сложение (см. список команд в приложении 1). Размещение команды ADD г в байте приведено на рис. 4.9,д.
Команда SUB r. Команда выполняет вычитание содержимого регистра-источника S из содержимого аккумулятора. Результат заносится в аккумулятор (рис. 4.9,6). Например, команда 10 010 ОН В выполняет вычитание содержимого регистра Е из содержимого регистра А и помещает результат в аккумулятор. Код этой команды SUB Е — 223 Q.
Таблица 4.4
Регистр |
Код |
Пара регистров |
Код |
Обозначение условия в мнемокоде |
Код |
А |
111 |
В (В, С) |
00 |
NZ (Z = 0) |
000 |
В |
000 |
D (D, E) |
01 |
Z(Z=1) |
001 |
С |
001 |
Н (Н, L) |
10 |
NC (CY - 0) |
010 |
D |
010 |
SP |
11 |
C(CY= 1) |
011 |
Е |
011 |
|
|
РО (Р = 0) |
100 |
Н |
100 |
|
|
РЕ(Р = 1) |
101 |
L |
101 |
|
|
Р (S - 0) |
ПО |
М (память) |
110 |
|
|
М (S= 1) |
ПО |
Команда SUI <В2> производит вычитание содержимого второго байта (команда двухбайтовая) из содержимого аккумулятора и помещает результат в аккумулятор (рис. 4.9,в). Восьмеричный код команды — 326Q (см. приложение 1).
Кроме команд, приведенных в качестве примеров, группа арифметических команд содержит команды сложения и вычитания содержимого аккумулятора с содержимым ячеек памяти, а также команды увеличения и уменьшения на единицу содержимого различных регистров.
