1.2 Команды инкрементирования и декрементирования (табл.1.2)
Примите к сведению, что команда INR (инкрементирование) увеличивает на единицу содержимое регистра или байта памяти, а команда DCR (декрементирование) уменьшает на единицу это содержимое. Эти команды не используют и не изменяют значение бита переноса, а остальные биты признаков вырабатывают по общим правилам.
Таблица 1.2 – Инкрементирование и декрементирование
Команды | Признаки | Выполняемые функции | ||||
Z | N | C | H | P | ||
INR R | + | + | - | + | + | (R)+1→R |
INR M | + | + | - | + | + | (M)+1→R |
DCR R | + | + | - | + | + | (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 – Программа на ассемблере.
Адрес | Код команды | Метка | Мнемоника | |
8200 8201 | 06 04 | PRG 1: | MVI B, 4 | |
8202 8203 8204 | 21 00 85 | LXI H, 8500 | ||
8205 | 7E | M1: | MOV A, M | |
8206 | 05 | M2: | DCR B | |
8207 8208 8209 | CA 12 82 | JZ M3 | ||
820А | 23 | INR H | ||
820В | BE | CMP H | ||
820C 820D 820E | DA 05 82 | JC M1 | ||
820F 8210 8211 | C3 06 82 | JMP M2 | ||
8212 | 7E | M3: | MOV A, M | |
8213 | 5F | MOV E, A | ||
8214 8215 | 16 | MVI D, 03 | ||
03 | ||||
8216 | A7 | ANA A | ||
8217 8218 8219 | 21 00 08 | LXI H, 0008 | ||
821A 821B | DE 00 | MVI C, 0 | ||
821C | 7B | MOV A, E | ||
821D | 17 | RAL | ||
821E | 5A | MOV E, D | ||
821F | 79 | MOV A, C | ||
8220 | 17 | RAL | ||
8221 | 92 | SUB D | ||
8222 8223 8224 | D2 26 82 | JNC M5 | ||
8225 | 82 | ADD D | ||
8226 | 4F | M5: | MOV C, A | |
8227 | 3F | CMC | ||
8228 | 7E | MOV A, M | ||
8229 | 17 | RAL | ||
822A | 67 | MOV H, A | ||
822B | 2D | DCR L | ||
822C 822D 822E | C2 13 82 | JNZ M4 | ||
822F | RST | |||
0 комментариев