- •Предисловие
- •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.3. Группа логических команд
Команды этой группы предназначены для выполнения логических, или булевых, операций над данными, .содержащимися в регистрах, ячейках памяти, а также над флагами условий. К этим операциям относятся операции: логического сложения (ИЛИ), логического умножения (И), суммирования по модулю 2, сравнения, сдвига, дополнения до 1 и до 2. Как и команды предыдущей группы, все логические команды оказывают влияние на флаги.
Команда ANA г выполняет параллельно поразрядное логическое И над содержимым регистра-источника и аккумулятора. Результат операции заносится в аккумулятор (рис. 4.10,а). Например, команда 10 100 100 В выполняет операцию логического умножения поразрядно над содержимым регистра Н и А и заносит результат в аккумулятор. Двоичный код 10 100 100 В соответствует восьмеричному коду 244Q команды ANA H.
Рис. 4.10. Примеры размещения некоторых логических команд в байтах
Команда ANI < В2 > является двухбайтовой и также выполняет поразрядную операцию логического И, но над содержимым второго байта команды и аккумулятора. Команда имеет восьмеричный код-3460 (рис. 4.10,6). Результат операции заносится в аккумулятор.
Команда ORAr аналогична команде ANA r, но в отличие от нее выполняет операцию поразрядного логического ИЛИ. Результат операции заносится в аккумулятор (рис. 4.10,в).
4.6.4. Группа команд переходов
Эта группа команд предназначена для организации правильной последовательности выполнения программы. Сюда входят команды безусловного и условного переходов, команды вызова подпрограммы и возвращения к главной программе. Все команды этой группы на флаги влияния не оказывают. Команды безусловного перехода выполняют специальные операции над содержимым счетчика команд. Команды условного перехода обеспечивают необходимое ветвление программы путем анализа состояния одного из четырех флагов: нуля, знака, четности и переноса, коды которых указаны в табл. 4.4.
Команда JMP <В2> <ВЗ> — трехбайтовая команда передает управление команде по адресу, содержащемуся в третьем и втором байтах текущей команды. Это осуществляется путем записи содержимого третьего и второго байтов команды в счетчик команд (рис. 4.11,а). Как уже отмечалось в § 4.3, счетчик команд представляет собой 16-разрядный регистр, содержащий адрес, по которому можно обратиться для считывания очередного байта команды. Восьмеричный код этой команды - 303 Q.
Команды CALL и RET — команды безусловного перехода. Первая из них передает управление подпрограмме, прекращая выполнение основной программы; вторая передает управление главной программе, возвращаясь к ее выполнению (рис. 4.11,£, в). Первая команда — трехбайтовая. Восемь старших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на единицу меньше содержимого указателя стека. Восемь младших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на две единицы меньше содержимого указателя стека. Содержимое указателя стека уменьшается на две единицы. Управление передается команде, адрес которой размещается в третьем и втором байтах команды CALL
Рис. 4.11. Примеры размещения некоторых команд переходов в байтах
Команда RET — однобайтовая. Ее восьмеричный код — 311Q (код предыдущей команды CALL — 315Q). В процессе выполнения этой команды содержимое указателя стека получает приращение на две единицы. Содержимое ячейки памяти по адресу, хранящемуся в указателе стека, пересылается в счетчик команд на место младших восьми разрядов. Содержимое ячейки памяти по адресу, на единицу большему, чем содержимое указателя стека, пересылается в счетчик команд на место старших восьми разрядов. Таким образом, возвращение к главной программе происходит всегда путем обращения к байту команды, непосредственно следующему за байтом, используемым командой CALL
