Організація програм, підпрограм і способи передачі параметрів в однокристальному МП КР580.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Системи автоматизованого проектуваня

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Комп’ютери і мікропроцесорні системи
Група:
КН

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР Звіт про виконання лабораторної роботи №4 на тему: “ Організація програм, підпрограм і способи передачі параметрів в однокристальному МП КР580 ” з курсу: “ Комп’ютери та мікропроцесорні системи ” Виконав студент групи КН-3 Львів - 2006 1. МЕТА РОБОТИ Вивчити команди переходів, виклику і повернення із підпрограми, способи передачі параметрів і отримати практичні навики програмування з використанням підпрограм. 2. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ 2.1. Характеристика команд передачі керування. Команди передачі керування, які змінюють природний порядок вибірки і виконання команд програми в однокристальному МП КР580, можуть бути поділені на 4 підгрупи: переходу, виклику підпрограми,повернення з підпрограми, повторного пуску. Команди цієї групи не змінюють стану регістра ознак. Команди передачі керування бувають двох типів: безумовні і умовні. Безумовні команди виконують певні операції із вмістом програмного лічильника РС, який вказує адресу наступної команди. Умовні команди спочатку аналізують стан однієї з чотирьох ознак (перевіряють виконання умови) і в залежності від цього змінюють або не змінюють вміст програмного лічильника. Оскільки ознаки встановлю-ються за результатом попередньої операції, то передача керування залежить від результату операції. Умови команд передачі керування такі: NZ-Z=0, результат не нуль; Z-Z=1, нуль; NC-CY=0, немає переносу; C-CY=1, є перенос; PO-P=0, непарність; PE-P=1, парність; P-S=0, плюс; M-S=1, мінус. 2.2. Команди переходів. 2.2.1.JMP J- АДРЕС- безумовний перехід. PC J- АДРЕС- 3-й і 2-й байти команди. Передати керування команді, адресу якої визначається 3-м і 2-м байтами команди, причому 3-й байт є старшим байтом адреси. Приклад: JMP C000H; PC  C000. Передати керування команді з адресою C000H. 2.2.2. УМОВА АДРЕСИ - умовний перехід. Якщо УМОВА, тоді PC  АДРЕСА. Якщо умова справджується, тоді передати керування команді, адреса якої визначається 3-м і 2-м байтами команди; в іншому випадку виконується подальша команда програми. З врахуванням умов існують 8 таких команд умовних переходів: JNZ - перехід, якщо Z=0 (не нуль); JZ - перехід, якщо Z=1 (нуль); JNC - перехід, якщо CY=0 (немає переносу); JC - перехід, якщо CY=1 (перенос); JPO - перехід, якщо P=0 (непарність); JPE - перехід, якщо P=1 (парність); JM - перехід, якщо S=0 (мінус); JP - перехід, якщо S=1 (плюс). Під час запису команд переходів на мові Асемблера адреса переходу задається в символьній формі (міткою). Після трансляції програми з мови Асемблера в об'єктний код символьна адреса замінюється двобайтовим числом. 2.2.3. PCHL; PC  HL. Безумовна передача керування команді, адреса якої визначається вмістом регістрової пари HL. При цьому, вміст регістра Н заноситься у вісім старших розрядів лічильника команд РС, а вміст регістра L - у вісім молодших. 2.3. Програмування простих розгалужень. Команди переходів використовуються для організації розгалужень і циклів у програмах. При розгалуженнях у програмі аналізуються деякі умови і в залежності від них або зберігається послідовний порядок виконання програми, або відбувається перехід на іншу частину програми. Індикаторами таких умов в мікропроцесорі виступають ознаки (прапорці). Розглянемо принцип розгалуження на простому прикладі. У залежності від значення старшого розряду числа В необхідно перейти до двох різних точок програми: PLUS або MINUS. Загальний алгоритм рішення цієї задачі такий: - перевірити значення старшого розряду числа В; - якщо В=0, тоді перейти на програму PLUS; - якщо В=1, тоді перейти на програму MINUS. Розглянемо декілька варіантів розв'язання цієї задачі. Оскільки безпосередній аналіз числа в регістрі В неможливий, число з регістра В спочатку пересилається в акумулятор, потім над його вмістом виконується деяка арифметична або логічна операція для того, щоб в залежності від числа встановити деяку ознаку (Z,S,CY,P). Варіант 1. (З аналізом ознаки Z). також запам'ятовується у стеку, необхідно слідкувати, щоб до команди повернення RET кількість витягувань дорівнювала кількості занесень у стек. Для забезпечення достатньої універсальності у специфікації кожної програми необхідно вказати місце знаходження даних, які обробляються підпрограмою, і результату, отриманого при її виконанні, а також регістри, які використовуються підпрограмою, вміст яких змінює підпрограма. Правильно складені підпрограми не повинні міняти вміст регістрів мікропроцесора, крім регістрів, які використовуються для початкових даних і результату. Для цього на початку підпрограми вміст регістрів, які додатково використовуються, запам'ятовуються у стеку, а в кінці підпрограми відновлюються. Якщо, наприклад, деяка підпрограма MOVE використовує регістри А,В і С, тоді їх запам'ятовування і відновлення здійснюється так : MOVE : PUSH PSW ; запам'ятовування регістрів А і F PUSH B ; запам'ятовування регістрів B i C ... POP B ; відновлення регістрів B i C POP PSW ; відновлення регістрів A i F RET ; повернення з підпрограми Порядок витягування даних із стека зворотний до порядку їх занесення у стек. Враховуючи, що адреса повернення підпрограми MOV A,B ;передати В в А для аналізу ANI 80H ;встановити ознаку Z JNZ MINUS JMP PLUS MINUS: ..... PLUS: ..... Варіант 2. (з аналізом ознаки S). MOV A,B ANA A ;встановити ознаку S JP PLUS MINUS: ..... PLUS: ..... Варіант 3. (З аналізом ознаки CY). MOV A,B RLC ;встановити ознаку CY JNC PLUS MINUS: ..... PLUS: ..... Варіант 4. (з аналізом ознаки P). MOV A,B ANI 1000 0000 B ; встановити ознаку P JPO PLUS MINUS: ..... PLUS: ..... Команди виклику і повернення з підпрограм належать до групи команд керування, які змінюють послідовний порядок виконання команд програми. Стани прапорців не змінюються. 2.4. Програмування циклів. Цикл у програмі- фундаментальна властивість програми ЕОМ- це засіб, який дозволяє за допомогою однієї і тієї ж послідовності команд виконати деякі дії багато разів. Загалом, цикл представляє собою групу команд, виконання яких багатократно повторюється за рахунок того, що в цій групі є команда, яка повертає керування знову на першу команду в групі команд, поки не виконається певна умова закінчення циклу. Програмування циклів покажемо на прикладі обчислення суми ряду N чисел, які розміщені в пам'яті з певною адресою. Для розв'язання задачі необхідно послідовно додавати кожне число ряду до поточної часткової суми. Можна написати програму, в якій для додавання кожного числа буде використовуватись окрема послідовність команд. Однак доцільно написати програму у вигляді циклу, який підраховує кількість сумованих чисел. Як лічильник циклу можна використати регістр, початкове значення якого можна встановити за межами циклу, а при кожній ітерації циклу модифікувати і перевіряти (тестувати) його значення. У кожній ітерації необхідно забезпечити вибір подальшого числа. У циклічній програмі можна виділити такі частини: ініціалізуючу, яка задає початкові дані і число ітерацій, основну роботу, модифікуючу і тест кінця циклу. Приклад організації програмного циклу: MVI B,N ; завантаження в регістр B числа ітерацій CYCL: ; основна частина ..... DCR B ; підрахунок ітерацій JNZ CYCL ; перехід на повтор, якщо не кінець циклу HLT ; кінець У прикладних програмах часто необхідно декілька разів виконувати певну кількість послідовностей команд над різними вхідними даними. У цих випадках зручно послідовність команд, яка повторюється, включити в об'єктну програму лише 1 раз, а в потрібних точках спеціальними командами викликати її для виконання з поточними даними. Така послідовність команд (програма в програмі) називається підпрограмою, або процедурою. Застосування підпрограм має такі переваги: - складну програму можна розділити на невеликі порівняно прості в уп- равлінні модулі, які можуть розроблятися декількома програмістами з відповідним скороченням термінів проектування програмного забезпечення; - підпрограми скорочують довжину прикладних програм, що забезпечує економію програмної пам'яті; - відлагоджені підпрограми типових обчислень можна зберігати в бібліотеках і використовувати в нових розробках. 2.5. CALL AДРЕСА - виклик підпрограми. ((SP)-1)PCH; ((SP)-2)PCL; SPSP-2; PCАДРЕСА. Команда безумовного виклику підпрограми. Поточне значення лічильника команд (адреса команди, яка йде за командою CALL) запам'ятовується в стеку. При цьому, вказівник стека зменшується на 2. Початкова адреса підпрограми, задана в 2-у і 3-у байтах команди, завантажується в лічильник команд. Внаслідок цього, після виконання команди CALL наступною виконуватиметься команда, адреса якої вказана у 2-у і 3-у байтах команди CALL. Приклад : 0142 CALL 1045H СТЕК<-0415; PC<1045. Виклик підпрограми з адресою 1045Н. 2.6. С УМОВА АДРЕСИ - умовний виклик підпрограми. Якщо УМОВА, тоді СТЕК<-PC, PC<-АДРЕСА. Якщо умова істинна, тоді виконуються дії, аналогічні команді CALL. У протилежному випадку - продовжується виконання основної програми. Як умови використовуються прапорці Z,CY,P,S. Із врахуванням умов можливі вісім таких команд умовного виклику підпрограми: CZ - виклик, якщо Z=1 (нуль); CNZ - виклик, якщо Z=0 (не нуль); CC - виклик, якщо C=1 (перенос); CNC - виклик, якщо CY=O (нема переносу); CPO - виклик, якщо P=O (непарність); CPЕ - виклик, якщо P=1 (парність); CP - виклик, якщо S=-0 (плюс); CМ - виклик, якщо S=1 (мінус). Приклад : 0415 CNZ 10A2 H Якщо Z=0, тоді СТЕК0418Н; PC10А2Н, інакше PC<-0418. 2.7. RET - безумовне повернення з підпрограми. PCСТЕК; SPSP+2. Адреса повернення в основну програму вибирається із стека і заноситься в лічильник команд, а вміст вказівника стека SP збільшується на 2. Вважається, що адреса повернення попередньо була занесена у стек командою CALL, або іншим шляхом. 2.8. R УМОВА - умовне повернення з підпрограми. Якщо УМОВА, тоді PCСТЕК. Якщо умова виконується, тоді виконуються дії, аналогічні команді RET; у протилежному випадку - наступна команда. Як умови перевірки використовуються прапорці Z,CY,P i S. З врахуванням умов можливі вісім таких команд умовного повернення з підпрограми: RZ - повернення, якщо Z=1 (нуль); RNZ - повернення, якщо Z=0 (не нуль); RC - повернення, якщо C=1 (перенос); RNC - повернення, якщо CY=O (нема переносу); RPO - повернення, якщо P=O (непарність); 2.9. RSTn - повторний запуск. СТЕКPC; SPSP-2; PC8n; n=0,1,...,7. Вміст лічильника команд запам'ятовується у стеку. При цьому, вказівник стека зменшується на 2. У лічильник команд заноситься адреса, яка визначається як добуток n на 8, за яким буде вибиратися подальша команда. Ця однобайтова команда аналогічна трибайтовій команді виклику підпрограми CALL, але має 8 фіксованих адрес переходу на підпрограми: PAGE \# "'Page: '#' '"  RST0 - 00H; RST1 - 08H; RST2 - 10H; RST3 - 18H; RST4 - 20H; RST5 28H; RST6 - 30H; RST7 - 38H. Приклад: RST4; Викликати підпрограму з адресою 20H. 2.10. Організація підпрограм. Виклик підпрограми порушує природний порядок виконання команд. З точки виклику, керування передається першій команді підпрограми, потім звичайно послідовно виконуються команди підпрограми, а по її завершенні керування передається на команду, яка є наступною після команди виклику підпрограми. На практиці часто одна викликана підпрограма викликає другу, а друга третю і т.д. Для правильної роботи такого механізму вкладень ("гніздування") підпрограм необхідно забезпечити достатню область пам'яті під стек. Постановка лабораторного завдання Ввести дані в пам’ять, використовуючи цикл. Проаналізувати третій розряд першого даного на наявність нуля, при наявності такого виконати: (6+5+4+3+2+1), при відсутності виконати: (6-5-4-3-2-1) через цикл. Результат записати в A. Текст програми ORG 100H MVI B,6 MVI D,2 MVI A,20 LXI H,1000H CYCL1 : MOV M,A ADD D INR L DCR B JNZ CYCL1 LDA 1000H ANI 00001000B JZ C2 LDA 1005H LXI H,1004H MVI D,5 CYCL3: MOV B,M SUB B DCR L DCR D JNZ CYCL3 STA 1009H JMP EXIT C2: LDA 1005H LXI H,1004H MVI D,5 CYCL2: MOV B,M ADD B DCR L DCR D JNZ CYCL2 STA 1009H EXIT: HLT Результати виконання програми  EMBED PBrush  Висновки: виконавши дану лабораторну роботу, я ознайомився з командами передачі управління, виклику та повернення з підпрограм, і реалізував на практиці програму з циклами.
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!