Лабораторна робота №1 
  Мікропроцесорні системи 
  Вивчення структурної організації та системи команд мікроконтролерів сімейства МК51 
     Виконав 
  Черкасов А.О. 
         Москва - 2012р. 
  Завдання 
   Знайти найбільший елемент масиву, розташованого у внутрішній пам'яті, і зберегти його значення в стеку. 
  Використовувані регістри і комірки пам'яті 
   Регістр або осередок памятіНазначеніеR0 (0000h) Адреса поточного елемента масиву. У початковий момент містить адресу початку масиву - 0010h.R1 (0001h) Кількість елементів масиву. Лічильник ітерацій.R2 (0002h) Регістр для тимчасового зберігання даних (елемента масиву, з яким в даній ітерації ведеться робота) .0008hНаібольшій елемент масиву даних, записаний в стек після завершення роботи программи.0010h - 0013hДанние. 
  Алгоритм розв'язання задачі- адреса початкового елемента массіва- кількість елементів ... dm - елементи масиву 
    Опис використовуваних команд 
   MOVRn, #data ??p> 
 n=0-7 
   Запис в регістр Rn даних #data. 
   MOV ad, #data ??p> 
 
 Запис за адресою ad даних #data. 
   MOVA,Rn 
  n=0-1 
  Запис з внутрішньої пам'яті даних (ВПД) в акумулятор даних, розташованих за адресою, який міститься в регістрі Rn. 
   INC Rn 
  n=0-7 
   Додаток одиниці до даних, записаних на регістрі Rn. 
   DEC Rn 
  n=0-7 
   Віднімання одиниці з даних, записаних на регістрі Rn. 
   XCH A, ad 
   Обмін даними між акумулятором і адресою ad. 
   JZ rel 
   Перехід за адресою або мітці rel, якщо на акумуляторі нуль. 
   MOV ad,Rn 
  n=0-7 
   Запис за прямим адресою даних з ВПД, адреса яких записаний в регістрі Rn. 
   SUBB A, ad 
   Віднімання з заемом з акумулятора значення, записаного в ВПД за адресою ad. 
   JBC bit, rel 
   Перехід за адресою або мітці rel, якщо встановлений біт bit, з очищенням цього біта. 
   SJMP rel 
  масив пам'ять програма стек 
  Безумовний перехід по мітці rel. 
   PUSH ad 
   Запис у стек значення, записаного за адресою ad. 
  Код програми 
  ;// --------------------------------------------------------------//
				
				
				
				
			 ;// Опис: Lab. Work (ASM Version)//
 ;// Copyright: MIREA, 1998 - 2000//
 ;// Процесор: МК 51//
 ;// Версія: 1.0//
 ;// Асемблер: A51 v. 6.02//
 ;// Дата: XX.XX.2001//
 ;// Коментарі: Файл-заготовка//
 ;// -------------------------------------------------------------//
 ;--- Тема програми. Не змінюйте его !!!---- 
  NAME LAB_DEMO 
  USING 0; Використовувати банк регістрів 0 
  Jmp Start; Початок програми 
  ORG 03h 
  LJmp Ext0Srv; Адреса обробника EXT INT 0 
  ORG 0BH; Адреса обробника TIMER INT 0 
  LJmp Time0Srv; 
  ORG 13H; Адреса обробника EXT INT 1 
  LJmp Ext1Srv; 
  ORG 1BH; Адреса обробника TIMER INT 1 
  LJmp Time1Srv; 
  ORG 23H; Адреса обробника переривання від 
  LJmp RiTiSrv; послідовного порту 
 ;--- Конец заголовка ---- 
 ; ---------- Тут вводите код програми ---------- 
 ; ---------- Ініціалізація ------------------------------ 
  Start: MOV R0, # 0010h; Початкова адреса масиву 
  MOV R1, # 0004h; Кількість ел-тів 
 ; ---------- Дані --------------------------------------- - 0010h, # 0Ah0011h, # 0Bh0012h, # 07h0013h, # 0Fh 
 ; ---------- Кінець даних ------------------------------- 
  MOV A, @ R0; Перший (еталонний) ел-т - на акумуляторі 
 ; ---------- Кінець ініціалізації -------------------- 
 ; ---------- Головний цикл ------------------------------- 
  Loop: INC R0; Наступна адреса ел-та 
  DEC R1; Декремент кол-ва ел-тів 
  XCH A, 0001h; Обмін акумулятора і R1 (еталонний ел-т на R1) 
  JZ EndLoop; Якщо на акумуляторі нуль (ел-ти масиву скінчилися) - кінець програми 
  XCH A, 0001h; Обмін акумулятора і R1 (еталонний ел-т на A) 
  MOV 0002h, @ R0; Запис у R2 слід. ел-та, адреса якого на R0 
  XCH A, 0002h; Обмін акумулятора і R2 (еталонний ел-т на R2) 
  SUBB A, 0002h; Віднімання з наступного елемента еталонного 
  XCH A, 0002h; Обмін акумулятора і R2 (еталонний ел-т на A) 
  JBC cy, Loop; Якщо є перенос (ел-т менше етал...