
- •Назначение системы
- •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. Получение машинных кодов команд
1. Группа команд однобайтовых пересылок
Команды данной группу производят обмен данными между регистрами МП и памятью МПС.
Биты регистра признаков F не изменяются в процессе выполнения этих команд.
MOV R1, R - под R1 или R понимается содержимое или регистров А, В, С, D, Е, H, L или ячейки памяти М, адрес которой должен быть каким-либо образом загружен в регистровую пару HL перед этой командой.
Примеры:
MOV А, B - переслать содержимое регистра В в регистр А (аккумулятор).
MOV M, А - переслать содержимое аккумулятора А в ячейку памяти М с адресом, который находится в паре НL.
MVI R, D8 - передать непосредственный операнд. Это двухбайтовая команда. Содержимое второго байта передается в регистр или ячейку памяти М, адресованную парой HL.
Примеры:
MVI С, 12 - переслать число 12 в регистр С.
MVI M, E2 - переслать число Е2 в ячейку памяти М, адресованную парой HL. Если, например, в HL было число 0900, то после выполнения этой команды в ячейке с адресом 0900 окажется число Е2.
STAX YZ* - запомнить содержимое аккумулятора с косвенной адресацией. Содержимое аккумулятора А загружается в ячейку памяти М, адрес которой содержится в регистровой паре ВС и DE (но не HL!).
Пример:
STAX B - переслать содержимое аккумулятора А в ячейку памяти М, адресованную парой ВС. Если, например, в ВС было число 0813, а в А было число 1F, то после выполнения этой команды в ячейке с адресом 0813 окажется число 1F.
LDAX YZ* - загрузить аккумулятор с косвенной адресацией. Действие команды противоположно действию предыдущей команды.
Пример:
LDAX D - переслать содержимое ячейки памяти М, адресованной парой DЕ в аккумулятор А. Если, например в DE было число 0820, а в ячейке памяти с адресом 0820 хранилось число 38, то после выполнения этой команды в А будет находиться число 38.
STA ADR - запомнить содержимое аккумулятора с прямой адресацией. Это трехбайтовая команда. Содержимое аккумулятора А пересылается в ячейку памяти с двухбайтовым адресом, определяемым вторым и третьим байтами команды. Причем, старшим байт является третий, а младшим - второй байт.
Пример:
STA 08F7 - переслать содержимое аккумулятора А в ячейку памяти с адресом 08F7.
LDA ADR - загрузить аккумулятор с прямой адресацией. Это трехбайтовая команда. Ее действие противоположно действию предыдущей команды.
Пример:
LDА 08F7 - переслать содержимое ячейки памяти с адресом 08F7 в аккумулятор. Если, например, в ячейке памяти с этим адресом хранилось число 7D, то после выполнения этой команды в А будет число 7D.
SPHL - загрузить регистр указателя стека SP. Содержимое регистровой пары HL пересылается в двухбайтовый регистр SP.
Пример:
Пусть в HL было число 09СА, а в SP было число 0840. После выполнения этой команды в SP будет число 09CA.
2. Группа команд двухбайтовых переделок
LXI Y2, D16 - загрузить непосредственный двухбайтовый операнд. Это трехбайтовая команда. Содержимое второго и третьего байтов команды пересылается в регистровую пару ВС, DE, HL или указатель стека SP. Старшим байтом числа является третий.
Пример:
LXI Н, 0920 - загрузка в регистровую пару HL числа 0920. После выполнения этой команды в регистре Н будет число 09, а в регистре L - 20.
SHLD ADR —запомнить содержимое регистров H и L. Это трехбайтовая команда. Содержимое регистра L пересылается в ячейку памяти с адресом, указанный во втором и третьем байтах команды, содержимое регистра Н пересылается в ячейку памяти с адресом, на 1 большим предыдущего.
Пример:
SHLD 091F - переслать содержимое регистровой пары Н по адресам 091F и 0920. Если, например, в паре HL было число 301E, то после выполнения этой команды по адресу 091F будет записано число 1E, а по адресу 0920 - число 30.
LHLD ADR - загрузить регистровую пару HL содержимым памяти. Это трёхбайтовая команда. Ее действие противоположно действию предыдущей команды.
Пример:
LHLD 0930 - переслать содержимое ячеек памяти с адресами 0930 и 0931 в регистры L и Н. Если, например, там хранились числа 2F и 31 соответственно, то после выполнения этой команды в регистре L будет число 2F, а в регистре H - 31.
PUSH YZ**- поместить в стек. Содержимое регистровой пары ВС, DE, HL или PSW записать в две последовательные ячейки стековой памяти. Если вместо YZ** указано PSW, то в стековую память последовательно помещается содержимое аккумулятора А и регистра признаков F.
Пример:
PUSH В - поместить в стек содержимое регистровой пары ВС. Пусть до начала обращения указатель стека SP содержал адрес 0839. Тогда содержимое старшего регистра В будет помещено в ячейку с адресом 0838, а младшего регистра С в ячейку с адресом 0837.
POP YZ** - вытолкнуть из стека. Содержимое двух последовательных ячеек стека загружается в регистры указанной регистровой пары. Команда по действию противоположна предыдущей.
Пример:
POP D – вытолкнуть из стека в регистровую пару DE содержимое двух последних ячеек стека. Пусть до начала обращения указатель стека SP содержал адрес 0850 и пусть в адресах 0850 и 0851 хранились числа 3D и 76. Тогда содержимое адреса 0850 будет помещено в младший регистр пары Е, а содержимое адреса 0851 - в старший регистр пары D, то есть содержимое пары DE будет 763D. После выполнения этой команды указатель SP будет содержать адрес 0852.
Команда POP PSW оказывает воздействие на все признаки регистра F. Остальные команды POP не оказывают воздействия на признаки.