Простые программы целесообразно оформлять в виде командных файлов. Первой директивой таких программ является директива ORG 100H, последней – END.
Пример 1. Написать программу сложения содержимого двух 8-разрядных ячеек памяти, которые находятся в сегменте данных со смещениями 1000Н и 1001Н соответственно. Результат разместить в ячейке памяти с адресом 1002H.
В этом примере для простоты не будем учитывать возможность возникновения переносов. Программа имеет вид:
| Мнемокод | Операнд(ы) | Комментарии |
| ORG | 100H | ; Начало программы |
| MOV | A, 1000H | ; A - 1000H ; переслать в 8-разрядный регистр A содержимое ячейки; памяти 1000 в шестнадцатеричном коде (Н) |
| ADD | A, 1001H | ; A - A + 1001H ; прибавить к содержимому A содержимое ячейки памяти ; с адресом 1001 в шестнадцатеричном коде |
| MOV | 1002H, A | ; 1002H- A ; переслать содержимое A в ячейку 1002H |
| END | ; завершение программы |
Пример 2 Написать программу делениясодержимого А на содержимое В. Результат поместить в 8-разрядную ячейку памяти с адресом 1000Н. остатком от деления пренебречь. Если содержимое В=0, то деление не выполнять, а на место результата поместить число FFFFH.
| Метка | Мнемокод | Операнд(ы) | Комментарии |
| ORG | 100H | ; Начало программы | |
| CMP | B,0 | ; сравнить содержимое В с нулем (команда ; влияет на установку флага нуля Z) | |
| JZ | M1 | ; если Z=1 (В=0), то переход на метку М1 | |
| DIV | B | ; иначе выполнить деление А – А:В | |
| JMP | M2 | ; безусловный переход на метку М» | |
| М1: | MOV | A, FFFFH | ; занести число FFFFH в А |
| М2: | MOV | 1000H, A | ; запомнить А в ячейке с адресом 1000Н |
| END | ; завершение программы |
СИСТЕМА КОМАНД 8-РАЗРЯДНОГО ОДНОКРИСТАЛЬНОГО МИКРОПРОЦЕССОРА КР580ВМ80А
| № | Мнемокод | Операция | Содержание команды | Признаки |
| Группа команд пересылки | ||||
| MOV R1, R2 | (R1) – (R2) | Передать содержимое одного регистра в другой | Все признаки сохраняют свои значения | |
| XCHG | (HL) – (DE) | Поменять местами содержимое регистровых пар D, E и H, L | ||
| SPHL | (SP) – (HL) | Передать содержимое регистровой пары H, L в указатель стека | ||
| MOV R, M | (R) - M (HL) | Передать содержимое регистра в ячейку памяти по адресу, хранящемуся в регистровой паре H, L | ||
| MOV M, R | M (HL) – (R) | Передать содержимое ячейки памяти по адресу, хранящемуся в регистровой паре H, L в регистр | ||
| LDAX RP’ | (A) – M (RP) | Загрузка аккумулятора содержимым ячейки, адрес которой указан в регистровой паре | ||
| STAX RP’ | M (RP) – (A) | Запись содержимого аккумулятора в память по адресу, указанному в регистровой паре | ||
| LDA A16 | (A) – M (A16) | Загрузка аккумулятора содержимым ячейки, адрес которой указан во втором и третьем байтах команды | ||
| STA A16 | M (A16) – (A) | Запись содержимого аккумулятора в память по адресу, указанному во втором и третьем байтах команды | ||
| LHLD A16 | (HL) – M (A16) | Загрузка регистровой пары H, L содержимым ячейки памяти с адресом, указанным во втором и третьем байтах команды | ||
| SHLD A16 | M (A16) – (HL) | Запись в память содержимого регистровой пары H, L по адресу, указанному во втором и третьем байтах команды | ||
| MVI R, D8 | (R) - D8 | Загрузка регистра вторым байтом команды | ||
| LXI RP, D16 | (RP) – D16 | Загрузка регистровой пары вторым и третьим байтом команды | ||
| MVI M, D8 | M (HL) – D8 | |||
| PUSH RP” | M (SP –1) – (RPH) M (SP – 2) – (RPL) (SP) – (SP) –2 | Запись содержимого регистровой пары в стек | ||
| POP RP” | (RPL) – M (SP) (RPH) – M (SP + 1) (SP) – (SP) + 2 | Загрузка регистровой пары из стека | ||
| XTHL | M (SP) - - (H) M (SP – 1) - - (L) | Поменять местами содержимое верхней ячейки стека и регистровой пары H, L | ||
| IN PORT | (A) – I (PORT) | Ввод | ||
| OUT PORT | O (PORT) – (A) | Вывод | ||
| Группа команд арифметических операций | ||||
| ADD R | (A) – (A) + (R) | К содержимому аккумулятора добавить содержимое регистра | S, Z, AC, P, CY | |
| ADC R | (A) – (A) + (R) +CY | К содержимому аккумулятора добавить содержимое регистра с учетом состояния триггера переноса | S, Z, AC, P, CY | |
| SUB R | (A) – (A) - (R) | Вычесть из содержимого аккумулятора содержимое регистра | S, Z, AC, P, CY | |
| SBB R | (A) – (A) - (R)-CY | Вычесть из содержимого аккумулятора содержимое регистра с учетом состояния триггера переноса (займа) | S, Z, AC, P, CY | |
| INR R | (R) – (R) + 1 | Увеличить содержимое регистра на 1 | S, Z, AC, P | |
| DCR R | (R) – (R) - 1 | Уменьшить содержимое регистра на 1 | S, Z, AC, P | |
| DAD RP | (HL) – (HL) + (RP) | К содержимому регистровой пары H, L прибавить содержимое любой регистровой пары | CY | |
| INX RP | (RP) – (RP) + 1 | Увеличить на 1 содержимое любой регистровой пары | - - - - - | |
| DCX RP | (RP) – (RP) – 1 | Уменьшить на 1 содержимое любой регистровой пары | - - - - - | |
| ADD M | (A) – (A) + M (HL) | К содержимому аккумулятора прибавить содержимое ячейки памяти с адресом, хранящимся в регистровой паре H, L | S, Z, AC, P, CY | |
| ADC M | (A) – (A) + M (HL)+CY | К содержимому аккумулятора прибавить содержимое ячейки памяти с адресом, хранящимся в регистровой паре H, L с учетом состояния триггера переноса | S, Z, AC, P, CY | |
| SUB M | (A) – (A) - M (HL) | Вычесть из содержимого аккумулятора содержимое ячейки памяти с адресом, хранящимся в регистровой паре H, L | S, Z, AC, P, CY | |
| SBB M | (A) – (A) - M (HL) – CY | Вычесть из содержимого аккумулятора содержимое ячейки памяти с адресом, хранящимся в регистровой паре H, L с учетом триггера переносов | S, Z, AC, P, CY | |
| INR M | M (HL) – M (HL) + 1 | Увеличить содержимое ячейки памяти с адресом, хранящимся в регистровой паре H, L на 1 | S, Z, AC, P | |
| DCR M | M (HL) – M (HL) - 1 | Уменьшить содержимое ячейки памяти с адресом, хранящимся в регистровой паре H, L на 1 | S, Z, AC, P | |
| ADI D8 | (A) – (A) + D8 | К содержимому аккумулятора прибавить второй байт команды | S, Z, AC, P, CY | |
| ACI D8 | (A) – (A) + D8 + CY | К содержимому аккумулятора прибавить второй байт команды с учетом триггера переносов | S, Z, AC, P, CY | |
| SUI D8 | (A) – (A) – D8 | Из содержимого аккумулятора вычесть второй байт команды | S, Z, AC, P, CY | |
| SBI D8 | (A) – (A) – D8 – CY | Из содержимого аккумулятора вычесть второй байт команды с учетом триггера переносов | S, Z, AC, P, CY | |
| DAA | Десятичная коррекция | S, Z, AC, P, CY | ||
| Группа команд логических операций | ||||
| ANA R | (A) – (A) AND (R) | Выполнить логическое умножение содержимого аккумулятора и регистра | S, Z, AC, P, CY=0 | |
| XRA R | (A) – (A) XOR (R) | Выполнить операцию неравнозначности содержимого аккумулятора и регистра | S, Z, AC=0, P, CY=0 | |
| ORA R | (A) – (A) OR (R) | Выполнить логическое сложение содержимого аккумулятора и регистра | S, Z, AC=0, P, CY=0 | |
| CMP R | (A) – (R) | Присвоить аккумулятору значение содержимого регистра | S, Z, AC, P, CY | |
| RLC | Циклический сдвиг влево | CY – A (7), AC=0 | ||
| RRC | Циклический сдвиг вправо | CY – A (0), AC=0 | ||
| RAL | Циклический сдвиг влево через A (0) - CY | CY – A (7), AC=0 | ||
| RAR | Циклический сдвиг вправо через A (7) - CY | CY – A (0), AC=0 | ||
| CMA | (A) – INV (A) | Инвертировать содержимое аккумулятора | - - - - - | |
| ANA M | (A) – (A) AND M (HL) | Выполнить логическое умножение содержимого аккумулятора и ячейки памяти с адресом, хранящимся в регистровой паре H, L | S, Z, AC, P, CY=0 | |
| XRA M | (A) – (A) XOR M (HL) | Выполнить операцию неравнозначности содержимого аккумулятора и ячейки памяти с адресом, хранящимся в регистровой паре H, L | S, Z, AC=0, P, CY=0 | |
| ORA M | (A) – (A) OR M (HL) | Выполнить логическое сложение содержимого аккумулятора и ячейки памяти с адресом, хранящимся в регистровой паре H, L | S, Z, AC=0, P, CY=0 | |
| CMP M | (A) – M (HL) | Загрузить в аккумулятор значение ячейки памяти с адресом, хранящимся в регистровой паре H, L | S, Z, AC, P, CY | |
| ANI D8 | (A) – (A) AND D8 | Выполнить логическое умножение содержимого аккумулятора и второго байта команды | S, Z, AC, P, CY=0 | |
| XRI D8 | (A) – (A) XOR D8 | Выполнить операцию неравнозначности над содержимым аккумулятора и вторым байтом команды | S, Z, AC=0, P, CY=0 | |
| ORI D8 | (A) – (A) OR D8 | Выполнить логическое сложение содержимого аккумулятора и второго байта команды | S, Z, AC=0, P, CY=0 | |
| CPI D8 | (A) – D8 | Сравнить содержимое аккумулятора и второго байта команды | S, Z, AC, P, CY | |
| CMC | (CY) – INV (CY) | Инвертировать содержимое триггера переноса | CY | |
| STC | (CY) - 1 | Установить в единицу триггер переноса | CY=1 | |
| Группа команд передачи управления | ||||
| PCHL | (PCH) – (H) (PCL) – (L) | Передать содержимое регистровой пары в программный счетчик | Все признаки сохраняют свои значения | |
| JMP A16 | (PC) – A16 | Безусловный переход | ||
| J (COND) A16 | Если условие выполняется, то (PC) – A16, иначе (PC) – (PC) + 1 | Условный переход по единичному значению триггера переноса | ||
| CALL A16 | M (SP – 1) – (PCH) M (SP – 2) – (PCL) (SP) – (SP) - 2 (PC) – A16 | Безусловный переход к подпрограмме | ||
| C(COND) A16 | Если условие выполняется, то см. предыдущую команду, иначе (PC) – (PC) + 1 | Условный переход | ||
| RST N | M (SP) – (PC) (PC) – N*8 | Начальный запуск превышающей программы | ||
| RET | (PCL) – M (SP) (PCH) – M (SP + 1) (SP) – (SP) + 2 | Возврат из подпрограммы | ||
| R (COND) | Если условие выполняется, то см. предыдущую команду, иначе (PC) – (PC) +1 | |||
| Группа специальных команд | ||||
| EI | Разрешить прерывание | Все признаки сохраняют свои значения | ||
| DI | Запретить прерывание | |||
| HLT | Останов | |||
| NOP | Пустая операция |