ПРИМЕРЫ НАПИСАНИЯ ПРОСТЫХ ПРОГРАММ




Простые программы целесообразно оформлять в виде командных файлов. Первой директивой таких программ является директива 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   Пустая операция

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-07-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: