Программирование циклических и типовых программ на Ассемблере для микропроцессора КР580ИК80
Заносим в ячейку памяти, начиная с номера 8500, четыре числа I1=4, I2=8, I3=6, I4=3. Логические команды над аккумулятором и регистром (табл.1.1). Команды инкрементирования и декрементирования (табл.1.2). Таблица 1.2 — Инкрементирование и декрементирование. Команды изменения содержимого аккумулятора (табл. 1.3). Таблица 1.3 — Изменение содержания аккумулятора. 1, то Ag>C2K, иначе (С2К)+3> С2К… Читать ещё >
Программирование циклических и типовых программ на Ассемблере для микропроцессора КР580ИК80 (реферат, курсовая, диплом, контрольная)
Дон ГТУ
Лабораторная работа № 4
Программирование циклических и типовых программ на Ассемблере для микропроцессора КР580ИК80
Цель лабораторной работы — изучить программирование циклических и типовых программ на Ассемблере для микропроцессора КР580Ик80.
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1. Команды, необходимые для организации разветвлений и циклических структур в программах
1.1 Логические команды над аккумулятором и регистром (табл.1.1)
Имеем в виду, что главным назначением команд этой группы является выработка признаков. Результат логической операции записывается в аккумулятор, заменяя первый операнд.
Таблица 1.1 — Логические команды
Команды | Признаки | Выполняемые функции | Команды | Признаки | Выполняемые функции | |||||||||
Z | N | C | H | P | Z | N | C | H | P | |||||
ANAR | (A)^®>A | |||||||||||||
ANAM | (A)^(M)>A | ANI Im | (A)^Im>A | |||||||||||
XRAR | (A)®>A | XRI Im | (A)Im>A | |||||||||||
XRAM | (A)(M)>A | |||||||||||||
ORAR | (A)®>A | ORI Im | (A)Im>A | |||||||||||
ORAM | (A)(M)>A | |||||||||||||
CMPR | (A)~® | CPI Im | (A)~Im | |||||||||||
CMPM | (A)~(M) | |||||||||||||
Условные обозначения: R — общее обозначение одного из регистров общего назначения (РОН) — A, B, C, D, E, H, L; M — адрес ячейки памяти, хранящийся в двух смежных РОН H и L; SP — стек; YSP — указатель стека; CzK — счетчик команд; Im — непосредственный операнд; Ag — адрес ячейки памяти, с которой работает данная команда. Запись ® означает содержимое регистра, нуль в графике «признаки» — установку в нуль при выполнении команды, а плюс — установку признака в соответствии с правилом установки флага.
Помните, что логические операции работают с каждыми из восьми битов независимо.
ANA «и» XRA «искл. или» ORA «или»
0 ^ 0>0 00>0 00>0
0 ^ 1>0 01>1 01>1
1 ^ 0>0 10>1 10>1
1 ^ 0>0 11>0 11>1 1 ^ 1>0
Команда CMP вычитает из содержимого аккумулятора второй операнд (не изменяя оба), формирует признаки по правилам команд вычитания.
1.2 Команды инкрементирования и декрементирования (табл.1.2)
Примите к сведению, что команда INR (инкрементирование) увеличивает на единицу содержимое регистра или байта памяти, а команда DCR (декрементирование) уменьшает на единицу это содержимое. Эти команды не используют и не изменяют значение бита переноса, а остальные биты признаков вырабатывают по общим правилам.
Таблица 1.2 — Инкрементирование и декрементирование
Команды | Признаки | Выполняемые функции | |||||
Z | N | C | H | P | |||
INR R | ; | ®+1>R | |||||
INR M | ; | (M)+1>R | |||||
DCR R | ; | ®-1>R | |||||
DCR M | ; | (M)-1>R | |||||
1.3 Команды изменения содержимого аккумулятора (табл. 1.3)
Команды этой группы работают только с содержанием аккумулятора, поэтому адресной команды не имеют.
Таблица 1.3 — Изменение содержания аккумулятора
Команды | Признаки | Выполняемые функции | |||||
Z | N | C | H | P | |||
RLC | ; | ; | ; | ; | Am>Am+1, A7>Ao, A7>C | ||
RRC | ; | ; | ; | ; | Am+1>Am, Ao>A7, Ao>C | ||
RAL | ; | ; | ; | ; | Am>Am+1, C>Ao, A7>C | ||
RAR | ; | ; | ; | ; | Am+1>Am, Ao>C1, C>A7 | ||
CMA | ; | ; | ; | ; | инвертирование | ||
Обратите внимание, что команда RLC устанавливает бит переноса в состояние, равное значению старшего разряда сумматора. Содержимое сумматора циклически сдвигается влево на одну позицию с переносом значения самого старшего разряда в самый младший разряд сумматора.
1.4 Команды изменения признака (флага) переноса
Примите к сведению, что для изменения флага переноса используются две команды: STS — установка в один; CMC — установка в 0.
1.5 Команды условных переходов
Команды условных переходов используют раннее выработанные значения признаков, сами их не изменяют.
Имейте в виду, что если заданное в операции условие выполняется, адрес из второго и третьего блока команды заносится в счетчик команд, т. е. выполнение программы начинается с команд расположенных по этому адресу, в противном случае выполняется следующая по порядку команда Таблица 1.4 — Команды условных переходов
Команды | Пояснение | |
JMP Ag | Ag>C2K (безусловный переход к команде Ag) | |
JC Ag | (C)=1, то Ag>C2K, иначе (С2К)+3> С2К | |
JNC Ag | (C)=0, то Ag>C2K, иначе (С2К)+3> С2К | |
JZ Ag | (Z)=1, то Ag>C2K, иначе (С2К)+3> С2К | |
JNZ Ag | (Z)=0, то Ag>C2K, иначе (С2К)+3> С2К | |
JP Ag | (N)=0, то Ag>C2K, иначе (С2К)+3> С2К (переход по «+») | |
JM Ag | (N)=1, то Ag>C2K, иначе (С2К)+3> С2К (переход по «-») | |
JPE Ag | (P)=1, то Ag>C2K, иначе (С2К)+3> С2К (переход по четности) | |
2 ЭКСПЕРИМЕНТАЛЬНЫЕ ИСЛЕДОВАНИЯ
Задание: Найти
Заносим в ячейку памяти, начиная с номера 8500, четыре числа I1=4, I2=8, I3=6, I4=3.
Используя полученные числа, составим программу, наберем программу на ЭВМ, и получим результат.
8500 04
8501 08
8502 06
8503 03
Таблица 2.1 — Программа на ассемблере.
Адрес | Код команды | Метка | Мнемоника | |
PRG 1: | MVI B, 4 | |||
LXI H, 8500 | ||||
7E | M1: | MOV A, M | ||
M2: | DCR B | |||
CA | JZ M3 | |||
820А | INR H | |||
820В | BE | CMP H | ||
820C 820D 820E | DA | JC M1 | ||
820F | C3 | JMP M2 | ||
7E | M3: | MOV A, M | ||
5F | MOV E, A | |||
MVI D, 03 | ||||
A7 | ANA A | |||
LXI H, 0008 | ||||
821A 821B | DE | MVI C, 0 | ||
821C | 7B | MOV A, E | ||
821D | RAL | |||
821E | 5A | MOV E, D | ||
821F | MOV A, C | |||
RAL | ||||
SUB D | ||||
D2 | JNC M5 | |||
ADD D | ||||
4F | M5: | MOV C, A | ||
3F | CMC | |||
7E | MOV A, M | |||
RAL | ||||
822A | MOV H, A | |||
822B | 2D | DCR L | ||
822C 822D 822E | C2 | JNZ M4 | ||
822F | RST | |||