Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
praktika.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7 Мб
Скачать
☆

Вихідні дані для програми:

  • перше значення дорівнює номеру за списком, помноженому на 5.

  • друге значення дорівнює номеру за списком, помноженому на 7.

Звіт повинен містити текст програми й результати виконання кожної операції.

Лабораторна робота №2

Дослідження внутрішньої й зовнішньої пам'яті даних і пам'яті програм

Ціль роботи: закріпити знання студентів при роботі з відлагоджувачем, вивчення команд пересилань із непрямою адресацією, покажчиків, роботу з масивами.

Теоретичні відомості. Пам'ять даних необхідна для приймання, зберігання й видачі інформації, використовуваної в процесі виконання програми. Пам'ять програм призначена для їх зберігання, а також для приймання, зберігання й видачі інформації, використовуваної в процесі виконання програми.

Для звертання до зовнішньої пам'яті даних використовується команда MOVX. Є два типи команд, що відрізняються забезпеченням 8-бітової або 16- бітової непрямої адреси до зовнішнього ОЗП даних. У першому випадку необхідно використовувати регістри R0 і R1 банків регістрів, уміст яких забезпечує 8-бітову адресу, яка мультиплексується з даними порту Р0. У другому випадку при виконанні вищевказаної команди покажчик даних DPTR генерує 16-бітова адреса.

Команда MOVC A,@A+dptr здійснює звертання до пам'яті програм і пересилає з неї байт коду в акумулятор. Адреса зчитуваного байта обчислюється як сума 8-бітового вихідного вмісту акумулятора без знака й умісту DPTR. Тому в лабораторній роботі перед звертанням до ПП рекомендується скинути вміст акумулятора.

При асемблерному програмуванні мікроконтролерів сім’ї МК51 здійснювати бітову адресацію можна, указавши адресу біта або безпосередньо

168

сам біт. Наприклад, запис JNB A.4,M1 або JNB Е4Н,M1 (адреса четвертого біта акумулятора) буде сприйматися відлагоджувачем однаково.

Нижче наведені фрагменти вікон робочого середовища Mcstudio і пояснення виконання команд пересилань із непрямою адресацією

Непряма адресація

Рис. 1. Виконання команди mov A,@R1

Команда MOV A,@Ri виконує пересилання в акумулятор умісту гнізда внутрішньої пам'яті даних. Адреса регістру (галузі 1) вказується в молодшому біті коду операції. Адреса гнізда (галузі 2) перебуває в регістрі-покажчику. Регістром-покажчиком можуть виступати тільки регістри R0 і R1.

Рис. 2. Виконання команди mov @r0,A

Команда MOV @Ri,A виконує пересилання вмісту акумулятора в гніздо внутрішньої пам'яті даних. Адреса гнізда перебуває в регістрі-покажчику. Регістром-покажчиком можуть виступати тільки регістри R0 і R1.

Приклад задання. Написати програму для мікроконтролера МCS-51, яка складає за модулем два елементи двох масивів довжиною 10 байтів. Перший масив перебуває у внутрішній пам'яті даних контролера, починаючи з адреси 60h. Другий – у пам'яті програм контролера, починаючи з адреси 40h. Результат додавання за модулем масивів записується на місце першого. Якщо в четвертому біті результату додавання за модулем два є «1», то, починаючи з адреси 51h у зовнішній пам'яті даних, записується адреса цього байта. Після обробки масиву в гніздо 50h зовнішньої пам'яті даних записується кількість отриманих покажчиків. При роботі із зовнішньою пам'яттю використовується однобайтова адресація.

Примітка. При написанні програми задається лише один масив, що перебуває в пам'яті програм, починаючи з адреси 40Н. Другий масив можна

169

задати безпосередньо в процесі роботи з відлагоджувачем, записавши елементи масиву в заданій області внутрішньої пам'яті даних (у цьому випадку – з адреси 60Н) і зберігши їх в окремому файлі. Результат виконання програми значення вихідного масиву можна побачити у вікні резидентної пам'яті даних (РПД). Для цього в головному меню необхідно вибрати пункт Вид – Резидентна пам'ять даних.

Текст програми мовою Асемблера

org 00h

MOV R0,#60H

; початкова адреса масиву, що перебуває у ВПД

MOV R1,#51H

; початкова адреса масиву в зовнішній ПД

MOV R2,#00H

; кількість отриманих покажчиків при адресації до зовнішньої ПД

MOV R3,#0AH

; кількість елементів масивів

M2:

CLR A

; скидання вмісту акумулятора

MOV DPTR,#M3 ; завантаження покажчика даних адресою масиву, що перебуває в ПП

MOVC A,@A+dptr ; додавання за модулем два n-х елементів масивів XRL A,@R0 ; і пересилання результату на місце першого MOV @R0,A

JNB A.4,M1 ; перевірка на «1» четвертого біта результату додавання за модулем два

MOV A,R0 ; запис адреси результату додавання за модулем два, у якому

; четвертий біт одиничний

MOVX @R1,A

INC R1 ; інкремент адрес масивів

INC R2 M1: INC R0

INC dptr

DJNZ R3,M2 ; перевірка масивів на їхнє закінчення

MOV R1,#50H ; запис кількості отриманих покажчиків при адресації MOV A,R2 ; до зовнішньої пам'яті в гніздо 50h зовнішньої пам'яті даних MOVX @R1,A

org 40h

M3: DB 01H,12H,43H,36H,0feh,37H,63H

DB 80h,0ach,91H ; задання масиву в пам'яті програм

End

Звіт повинен містити текст програми, текст індивідуального завдання й блок-схему алгоритму, результат виконання програми.

Початок 1

Пересилання вмісту акумулятора за адресою, що зберігається в R1

Інкремент R0, R1

Інкремент R2, DPTR

Декремент R3

Завантаження покажчика даних адресою масиву, що перебуває в ПП

Пересилання в R0 початкової адреси масиву в ВПД

Пересилання в R1 початкової адреси масиву покажчиків

Адреса, у якій зберігається кількість покажчиків при адресації до ВПД

Кількість елементів масивів – в R3

Ні R3=0

Так

Збереження в R1 числа 50Н

Пересилання вмісту R2 в акумулятор

Пересилання вмісту акумулятора за адресою в R1

Кінець

Скидання вмісту акумулятора

Пересилання в акумулятор вмісту комірки пам'яті програм, що перебуває за адресою в DPTR

Додавання за модулем два

Збереження вмісту акумулятора за адресою в R0

А.4=0

Так

170

Ні

Пересилання вмісту гнізда, що зберігається за адресою в R0 в акумулятор

1

Блок-схема програми складання за модулем двох масивів

171

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]