КАТЕГОРИИ: Архитектура-(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) |
Ассемблер А51
Управление программой. Операторы управления программой в C51
Goto метка; [ ] Метка: [ ] ------------------------------------- if (условие) while (условие) do for (i=0;i<N; i()) [ ]; { { { else [ ]; [ ]; if(усл) break; [ ]; } } } while(условие); -------------------------------------- switch (выражение) { Case значение of: [ ]; break; ………………….. Case значение of: [ ]; break;
Default: [ ]; }
В C51 могут быть определены рекурсивные (рекуррентные) вычисления, в которых циклы заменяют рекурсии. Например, факториал определяетcя следующей рекурсивной функцией F(0)=1; F(i) = F(i-1)*i Лаборатория 1) //рекурсивное вычисление int f=1; char i=0; fact(char n); main(){ fact(5);} fact(n) { if(i<n) {i++;f*=i;fact(n);}}
//Циклическая прогрмма вычислений char n,i=0; int f=1; main() { n=5; while(i<=n) {i++; f*= i;} } Сравнить программы рекурсивных функций в А51
3. Программная модель на уровне Ассемблера А51. Программная модель в Ассемблере представляет организацию памяти, ввод-вывод и систему команд. В Ассемблере А51, для демонстрации работы могут быть использованы элементы схемотехники. Подробное описание системы команд приведено в Help Keil [1] и Приложении 1. CISC архитектура MCS51 выполняет 111 базовых команд. для упрощения расчетов при моделировании реального времени выбрана частота синхронизации 12 Мгц, единица отсчета времени -цикл из 12 тактов(1мкс), команды выполняются за 1-3 цикла. Диаграмма обозначает программно-доступные на уровне системы команд или Ассемблера ресурсы компьютера. Таблица команд mcs51 приведена в Приложении 1. Рис.3.1. Программная модель mcs51 на уровне Ассемблера.
Пример оформления ассемблерной программы
;$nomod отказ от модели mcs51 (в проекте выбрана другая модель) dseg at 0x40; абсолютный сегмент данных stack: ds 8; переменная размером 8 байт cseg at 0; абсолютный сегмент кода размещается с адреса 0 jmp start; в программной памяти ;P3,P2= (P1>>4)*10 + P1; start:; начало исполняемой программы mov a,P1; ввод байта данных с порта Р1 в аккумулятор anl a,#0f0h; выделение старшей тетрады А1 swap a; тетрада перемещается в младшие разряды (P1>>4) mov b,#10; 10 в регистре множителя Call func; вызов подпрограммы swap a; (P2/10)<<4) orl a,b mov P3,a jmp $; динамический останов funr:; подпрограмма mul ab add a,P1 mov P2,a mov a,b addc a,#0 mov P3,a ret end; псевдокоманда ассемблера- завершение текста
В окне VisialKeil выбрать меню Projects/ options/listing задать Assembly Code - формирование листинга компиляции в Ассемблере. В файле.LST будет получен следующий листинг этой программы.
; FUNCTION main (BEGIN) ; SOURCE LINE # 4 ; SOURCE LINE # 5 ; SOURCE LINE # 6
0000 E590 MOV A,P1 0002 C4 SWAP A 0003 540F ANL A,#0FH 0005 75F00A MOV B,#0AH ……………………..
000d 2F ADD A,R7 000e F5A0 MOV P2,A
; FUNCTION main (END)
В файле с расширением .M51 приведено распределение памяти для проекта
Дата добавления: 2014-12-27; Просмотров: 840; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |