Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Простейшая микро-ЭВМ. Проектирование. Наладка. Использование.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

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