
- •Назначение системы
- •2. Описание лабораторной установки
- •2.1. Устройство и принцип работы составных частей лабораторной мпс
- •2.2. Общее описание структуры лабораторной мпс
- •2.3. Основные сведения о работе лабораторной мпс
- •3. Организация обмена информацией в микроЭвм
- •3.1. Описание микропроцессора кр 580 вм 80а
- •3.2. Слово состояния мп и системная шина управления
- •3.3. Извлечение кода команды, данных из памяти или внешнего устройства
- •3.4. Запись данных в память или внешнее устройство
- •3.5. Выполнение команд по циклам и программ по шагам
- •4. Работа с мпс
- •4.1. Описание клавиатуры
- •4.2. Описание функция системного монитора
- •4.2.1. Индикация и изменение содержимого памяти (п)
- •4.2.2. Индикация и изменение содержимого регистров (рг)
- •4.2.3. Передача управления программе пользователя (ст)
- •4.2.4. Определение контрольной суммы массива памяти (кс)
- •4.2.5. Заполнение массива памяти константой (зк)
- •4.2.6. Перенесение массива памяти в адресном пространстве (пм)
- •4.2.7. Прерывание выполнения программы
- •5. Программирование мпс
- •5.1. Язык Ассемблера микропроцессора кр 580 вм 80a
- •1. Группа команд однобайтовых пересылок
- •2. Группа команд двухбайтовых переделок
- •3. Группа команд ввода/вывода
- •4. Группа команд обмена байтами
- •После выполнения команды в а будет число
- •6. Группа команд арифметических и логических операций с двумя операндами
- •7. Команды сдвигов содержимого аккумулятора
- •8. Команды передачи управления и работы с подпрограммами
- •9. Специальные команды
- •5.2. Получение машинных кодов команд
3. Группа команд ввода/вывода
IN N – ввести. Это двухбайтовая команда. Байт информации, размещенный на шине данных портом ввода, адрес которого задан вторым байтом команды IN, загружается в аккумулятор А.
Пример: IN E0 - ввести из порта с адресом Е0 байт информации. Если порт установил на шине данных, например, байт 18, то после выполнения этой команды в аккумуляторе А будет число 18.
OUT N - вывести. Это двухбайтовая команда. Содержимое аккумулятора А выдается на шину данных и помещается в порт вывода с адресом, заданным вторым байтом команды OUT.Пример:OUT E1 - вывести из аккумулятора А его содержимое в порт вывода с адресом Е1. Если в аккумуляторе А до выполнения было, например, число 20, то после выполнения этой команды в выводном порте будет число 20.
4. Группа команд обмена байтами
XCHG - обменять содержимое пары регистров HL с содержимым пары регистров DЕ, причем обмен происходит следующим образом:
(H)↔(D)
(L)↔(E)
XTHL - обменять cодержимое указателя стека SP и пары регистров HL, причем обмен происходит следующим образом:
(L)↔(SPL)
(H)↔(SPH)
где SPH –старший байт указателя стека,
SPL – младший байт указателя стека.
5. Группа команд арифметических и логических операций с одним операндом
CMC – инвертировать бит С признака переноса в регистре признаков F.
Пример:
Пусть для выполнения байт признака F
1 1 0 0 0 0 1 0 (C2)
После выполнения байт признака F будет
1 1 0 0 0 0 1 1 (C3)
STC – установить признак переноса.
Пример:
Пусть до выполнения байт признака F
1 0 0 0 0 0 1 1 (83)
После выполнения байт признака F будет
1 0 0 0 0 0 1 1 (83)
Примечание. Обычно эти две команды используют для очистки признака С следующий образом:
STC
СМС
Такая последовательность гарантирует установление признака С в 0.
СМА - инвертировать содержимое аккумулятора А.
Пример:
Пусть до выполнения в А число
1 1 0 1 1 0 0 1 (D9)
После выполнения команды в а будет число
0 0 1 0 0 1 1 0 (26).
DAA - десятичная коррекция. Если значение младшего 4-разрядного символа больше девяти, то есть признак переноса из младшего полубайта АС=1, то корректор прибавляет двоичную цифру 6 к содержимому аккумулятора. Затем анализируется старший полубайт и, если он содержит число, большее девяти, то есть признак переноса С=1, то корректирует содержимое аккумулятора А путем прибавления к старшему полубайту двоичной цифры 6.
INR R - увеличить на 1 содержимое регистра или ячейки памяти. Понятие R дано в команде MOV.
Пример:
До выполнения команды INR В в регистре В было число 8С. После выполнения в В будет число 8D.
DCR R - уменьшить на единицу содержимое регистра или ячейки памяти.
Пример:
До выполнения команды DCR E в регистре Е было число FE. После выполнения в Е будет число FD.
INX YZ - увеличить на 1 содержимое пары регистров YZ. Понятие дано в команде LXI.
Пример:
До выполнения команды INX SP в регистре SP было число 0900. После выполнения команды в SP будет число 0901.
DCX YZ - уменьшить на 1 содержимое пары регистров YZ.
Пример:
До выполнения команды DCX D в паре DE было число 0900. После выполнения команды в регистровой паре DE будет число 08FF.