Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Кросс-системы для разработки и отладки ППО

Для подготовки текстов, получения объектных кодов и отладки ППО требуются средства автоматизации разработки программ в виде кросс-систем для универсальных мини- и микроЭВМ.

В минимальный состав ПО кросс-систем входят:

¨ редактор текстов;

¨ программа-транслятор, обеспечивающая преобразование исходного текста ППО в объектный модуль (ASM48, ASM51);

¨ редактор внешних связей (LINK), позволяющий включать в программу модули, разработанные независимо друг от друга;

¨ программу, обеспечивающую настройку перемещаемых программных модулей на абсолютные адреса (LOCATE);

¨ отладчики, интерпретирующие выполнение программ в различных режимах: трассировки, пофрагментного выполнения команд и т.д. и ряд других модулей в зависимости от типа МК или контроллера.

Отладка ППО представляет собой отдельную сложную задачу, которая не поддается формализации и требует высокого профессионализма разработчика.

Отладка также выполняется в несколько этапов:

¨ автономная отладка каждой процедуры в статическом режиме, где проверяется правильность вычислений, последовательностей переходов внутри процедуры, отсутствие зацикливаний и т.п.

¨ комплексная отладка в статическом режиме, где проверяется правильность алгоритма управления (по последовательности формирования управляющих воздействий);

¨ комплексная отладка в динамическом режиме без подключения объекта для определения реального времени выполнения ППО и его отдельных фрагментов.

С помощью отладчиков разработчику предоставлен доступ к любому ресурсу МК, имеется возможность покомандного и пофрагментного исполнения программ и останова по условию, а также подсчета числа тактов выполнения программы или ее фрагментов, инициирования прерываний, дисассемблирования содержимого памяти программ и т.д.

Кросс-отладчики позволяют промоделировать все возможные варианты работы программы, также возможна проверка работоспособности программы при нештатных ситуациях в условиях поступления некорректных входных воздействий.

Наиболее мощные средства отладки позволяют моделировать и среду обитания МК, т.е. различные объекты управления и датчики, подключаемые к нему и другие устройства (через библиотеку моделей объектов и устройств сопряжения с МК). Главным недостатком кросс-систем является невозможность прогона программ в реальном времени МК и комплексной проверки АС и ППО. Эта проблема частично разрешима с помощью отладочных комплексов на основе микроЭВМ, построенной на однотипном процессоре и модулей ВСЭ.

Таблица А.1 - Команды внутренних пересылок и арифметико-логических преобразований

Мнемоника   Выполняемые
п/п команды Комментарии преобразования
    Команды пересылки  
  MOV A,Rn Пересылка регистра в аккумулятор AC:= (Rn); Rn=0-7
  MOV A,@Rn Пересылка байта из РПД в аккумулятор AC:= [(Rn)]; Rn=0-1
  MOV A,#dan Пересылка непосредственного операнда в аккумулятор AC:= dan
  MOV Rn,A Пересылка АС в регистр (Rn):=AC; Rn=0-7
  MOV Rn,#dan Пересылка непосредственного операнда в регистр (Rn):= dan; Rn=0-7
  MOV @Rn,A Пересылка АС в РПД [(Rn)]:= AC; Rn=0-1
  MOV @Rn,#dan Пересылка непосредственных данных в РПД [(Rn)]:= dan; Rn=0-1
  MOV A,PSW Пересылка PSW в АС AC:=PSW
  MOV PSW,AC Пересылка АС в PSW PSW:= AC
  MOV A,T Пересылка таймера/счетчика в АС AC:=T
  MOV T,A Пересылка АС в таймер/счетчик T:=AC
  XCH A,Rn Обмен регистра с АС AC:=(Rn); (Rn):=AC; Rn=0-7
  XCH A,@Rn Обмен АС с РПД AC:= [(Rn)]; [(Rn)]:= AC; Rn=0-1
  XCHD A,@Rn Обмен младших тетрад АС и байта РПД AC[3-0]:= [(Rn)][3-0]; [(Rn)][3-0]:= AC[3-0]; Rn=0-1
  MOVP A,@A Пересылка байта из текущей страницы памяти программ в аккумулятор PC[7-0]:= AC; AC:=((РС[11-0]));
  MOVР3 A,@А Пересылка байта из третьей страницы памяти программ в аккумулятор PC[11-8]:= 0011; PC[7-0]:= AC; AC:=((РС[11-0]));
    Команды пересылки с портами  
  MOVX A,@Rn Пересылка байта из ВПД в АС AC:=ВПД[(Rn)]; Rn=0-1
  MOVX @Rn,A Пересылка АС во ВПД ВПД[(Rn)]:= AC; Rn=0-1
  MOVD A,Pp Ввод тетрады из порта Рр схемы расширителя ВР43 (р=4-7) RgCOP:=Pp.00; AC[3-0]:=(Pp); AC[7-4]:=0
  MOVD Pp,A Вывод тетрады в порт Рр схемы расширителя ВР43 (р=4-7) RgCOP:=Pp.11 RgPp:=AC; Pp:= RgPp
  OUTL BUS,A Пересылка АС в порт BUS RgBUS:=AC; BUS:=RgBUS;
  INS A,BUS Стробируемый ввод данных из порта BUS AC:=BUS
  OUTL Pp,A Пересылка АС в порт Рp (р=1,2) RgPp:=AC; Pp:=RgPp;
  IN A,Pp Пересылка данных из порта Рр в АС AC:=RgPp & Pp
    Арифметические команды  
  ADD A,Rn Сложение регистра с аккумулятором AC:= (Rn) + AC; Rn=0-7
  ADD A,@Rn Сложение байта из РПД с аккумулятором AC:= [(Rn)] + AC; Rn=0-1
  ADD A,#dan Сложение непосредственного операнда с аккумулятором AC:= dan + AC
  ADDC A,Rn Сложение регистра с аккумулятором и переносом AC:= (Rn) + AC + C; Rn=0-7
  ADDC A,@Rn Сложение байта из РПД с аккумулятором и переносом AC:= [(Rn)] + AC + C; Rn=0-1
  ADDC A,#dan Сложение непосредственного операнда с аккумулятором и переносом AC:= dan + AC + C
  DA A Десятичная коррекция АС Если PSW[CA]=1 или AC[3-0] > 9, то AC[3-0]:=AC[3-0]+6; иначе, если PSW[CY]=1 или AC[7-4] >9 то AC[7-4]:=AC[7-4] + 6;
  INC A Инкремент аккумулятора AC:=AC + 1
  INC Rn Инкремент регистра (Rn):=(Rn) + 1; Rn=0-7
  INC @Rn Инкремент байта в РПД [(Rn)]:=[(Rn)] +1; Rn=0-7
  DEC A Декремент аккумулятора AC:=AC - 1
  DEC Rn Декремент регистра (Rn):=(Rn) - 1; Rn=0-7
    Логические команды  
  ANL A,Rn Логическое И регистра с аккумулятором AC:= (Rn) & AC; Rn=0-7
  ANL A,@Rn Логическое И байта из РПД с аккумулятором AC:= [(Rn)] & AC; Rn=0-1
  ANL A,#dan Логическое И непосредственного операнда с аккумулятором AC:= dan & AC
  ORL A,Rn Логическое ИЛИ регистра с аккумулятором AC:= (Rn) V AC; Rn=0-7
  ORL A,@Rn Логическое ИЛИ байта из РПД с аккумулятором AC:= [(Rn)] V AC; Rn=0-1
  ORL A,#dan Логическое ИЛИ непосредственного операнда с аккумулятором AC:= dan V AC
  XRL A,Rn Сложение по модулю 2 регистра с аккумулятором AC:= (Rn) Å AC; Rn=0-7
  XRL A,@Rn Сложение по модулю 2 байта из РПД с аккумулятором AC:= [(Rn)] Å AC; Rn=0-1
  XRL A,#dan Сложение по модулю 2 непосредственного операнда с аккумулятором AC:= dan Å AC
  CLR A Очистка аккумулятора AC:=0
  CPL A Инверсия аккумулятора AC:=~AC
  SWAP A Обмен тетрад в аккумуляторе AC[7-4]:= AC[3-0]; AC[3-0]:= AC[7-4];
  RL A Циклический сдвиг влево аккумулятора AC:= L1(AC); AC[0]:= AC[7]
  RLC A Сдвиг влево аккумулятора через перенос AC:= L1(AC); AC[0]:= C; C:= AC[7]
  RR A Циклический сдвиг вправо аккумулятора AC:= R1(AC); AC[7]:= AC[0]
  RRC A Сдвиг вправо аккумулятора через перенос AC:= R1(AC); AC[7]:= C; C:= AC[0]
    Логические команды с портами  
  ANLD Pp,A Логическое И аккумулятора и порта Рр (р=4-7) RgCOP:=Pp.01 RgPp:=AC & RgPp; Pp:= RgPp
  ORLD Pp,A Логическое ИЛИ аккумулятора и порта Рр (р=4-7) RgCOP:=Pp.10 RgPp:=AC V RgPp; Pp:= RgPp
  ANL BUS,#d Логическое И константы и порта BUS RgBUS:=RgBUS & dan; BUS:=RgBUS
  ORL BUS,#d Логическое ИЛИ константы и порта BUS RgBUS:=RgBUS V dan; BUS:=RgBUS;
  ANL Pp,#d Логическое И константы и порта Рр (р=1,2) RgPp:=RgPp & dan; Pp:=RgPp;
  ORL Pp,#d Логическое ИЛИ константы и порта Рр (р=1,2) RgPp:=RgPp V dan; Pp:=RgPp;

 

Таблица А2 - Команды управления режимами работы МК48 и работы с флагами

Мнемоника   Выполняемые
п/п команды Комментарии преобразования
  STRT T Запуск таймера T:= T + ALE:32
  STRT CNT Запуск счетчика T:= T + T0
  STOP TCNT Останов таймера/счетчика T:= T
  EN TCNTI Разрешение прерываний от таймера Et:= 1
  DIS TCNTI Запрещение прерываний от таймера Et:= 0
  EN I Разрешение внешнего прерывания Eint:= 1
  DIS I Запрещение внешнего прерывания Eint:= 0
  SEL RB0 Выбор нулевого банка регистров PSW[BS]:=0
  SEL RB1 Выбор первого банка регистров PSW[BS]:=1
  SEL MB0 Выбор нулевого банка памяти программ MB:=0
  SEL MB1 Выбор первого банка памяти программ MB:=1
  ENTO CLC Разрешение выдачи синхросигнала на выход TО  
  NOP Пустая команда  
  CLR C Сброс флага переноса в PSW PSW[C]:= 0
  CLR FO Сброс флага F0 в PSW PSW[F0]:= 0
  CLR F1 Сброс флага F1 F1:=0
  CPL C Инверсия флага переноса в PSW PSW[C]:=PSW[~C]
  CPL F0 Инверсия флага F0 в PSW PSW[F0]:= PSW[~F0]
  CPLF1 Инверсия флага F1 F1:= ~F1

 

Таблица А.3 - Команды передачи управления

Мнемоника   Выполняемые
п/п команды Комментарии преобразования
  JMP adr11 Безусловный переход PC[11]:= MB; PC[10-0]:= adr11
  CALL adr11 Вызов подпрограммы PC[11]:= MB; PC[10-0]:= adr11; (SP):= PSW[7-4].PC[11-8]; (SP+1):= PC[7-0]; SP:=SP+2
  RETR Возврат из подпрограммы и восстановление PSW SP:= SP-1; PC[7-0]:= (SP); SP:=SP-1; PC[11-8]:= (SP)[3-0]; PSW[7-4]:= (SP)[7-4]
  RET Возврат из подпрограммы SP:= SP-1; PC[7-0]:= (SP); SP:=SP-1; PC[11-8]:= (SP)[3-0];
  JMPP @A Косвенный переход в текущей странице памяти программ PC:= PC[11-8]. [AC];
  DJNZ Rn,adr8 Декремент регистра и переход, если не нуль Rn:=(Rn) - 1; Если Rn<>0, то PC[7-0]:= adr8, иначе PC:=PC+1;
  JC adr8 Условный переход, если перенос Если C¹0, то PC[7-0]:= adr8, иначе PC:=PC+1
  JNC adr8 Условный переход, если нет переноса Если C=0, то PC[7-0]:=adr8, иначе PC:=PC+1
  JZ adr8 Условный переход, если АС=0 Если AC=0, то Z:=1; PC[7-0]:=adr8, иначе PC:=PC+1; Z:= 0
  JNZ adr8 Условный переход, если АС не равен нулю Если AC¹0, то Z:=0; PC[7-0]:=adr8, иначе PC:=PC+1; Z:= 1
  JT0 adr8 Условный переход, если на входе Т0 высокий уровень Если T0= 1, то PC[7-0]:= adr8, иначе PC:=PC+1
  JNT0 adr8 Условный переход, если на входе Т0 низкий уровень Если T0= 0, то PC[7-0]:=adr8, иначе PC:=PC+1
  JT1 adr8 Условный переход, если на входе Т1 высокий уровень Если T1= 1, то PC[7-0]:= adr8, иначе PC:=PC+1
  JNT1 adr8 Условный переход, если на входе Т1 низкий уровень Если T1= 0, то PC[7-0]:=adr8, иначе PC:=PC+1
  JF0 adr8 Условный переход, если флаг F0 установлен Если F0= 1, то PC[7-0]:= adr8, иначе PC:=PC+1
  JF1 adr8 Условный переход, если флаг F1 установлен Если F1= 1, то PC[7-0]:=adr8, иначе PC:=PC+1
  JTF adr8 Условный переход, если флаг переполнения таймера установлен Если TF=1, то TF:=0; PC[7-0]:=adr8, иначе PC:=PC+1;
  JNI adr8 Условный переход, если на входе ^ZPR низкий уровень Если ZPR=0, то PC[7-0]:=adr8, иначе PC:=PC+1
  JBb adr8 Условный переход, если бит аккумулятора равен единице (b=0-7) Если AC[b]= 1, то PC[7-0]:=adr8, иначе PC:=PC+1

 

Таблица А.4 - Команды, модифицирующие флаги

№ команды   Мнемоника PSW CY CA F0 BS Признаки F1 MB TF Z
15-17 ADD + + - - - - - -
18-20 ADDC + + - - - - - -
  CLR C 0 - - - - - - -
  CPL C + - - - - - - -
  CLR F0 - - 0 - - - - -
  CPL F0 - - + - - - - -
  CLR F1 - - - - 0 - - -
  CPL F1 - - - - + - - -
  DA A + + - - - - - -
  JTF - - - - - - 0 -
  MOV PSW,A + + + + - - - -
  RETR + + + + - - - -
  RLC A + - - - - - - -
  RRC A + - - - - - - -
  SEL MB0 - - - - - 0 - -
  SEL MB1 - - - - - 1 - -
  SEL RB0 - - - 0 - - - -
  SEL RB1 - - - 1 - - - -
  DJNZ Rn,adr - - - - - - - +
  JZ adr - - - - - - - +
  JNZ adr - - - - - - - +

 

<== предыдущая лекция | следующая лекция ==>
Средства отладки АС и ППО мкс | Внутренняя архитектура ЦП i486
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 431; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.