Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 812; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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