
- •Робота з компілятором ср/м
- •Інструментальні засоби динамічного відлагодження програм
- •Програмні засоби організації програми
- •Текст програми
- •Результати виконання програми
- •Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій
- •Способи адресації операндів і команди пересилання даних однокристального мп кр580
- •Теоретичні відомості Способи адресації в мп кр580
- •2.2. Команди пересилання даних мп кр580
- •Наприклад :
- •2.3. Стек і команди роботи зі стеком в однокристальному мп кр580
- •Карта пам'яті
- •Текст програми
- •Результати виконання програми
- •Теоретичні відомості
- •2. Короткі теоретичні відомості
- •Карта пам'яті
- •Текст програми
- •Результати виконання програми
- •Теоретичні відомості
- •2. 6. С умова адреси - умовний виклик підпрограми.
- •2. 8. R умова - умовне повернення з підпрограми.
- •2. 10. Організація підпрограм.
- •Карта пам’яті Текст програми
- •Результати виконання програми:
- •Теоретичні відомості
- •Арифметична операція множення
- •Арифметична операція ділення
- •Словесний опис алгоритму
- •Приклад множення чисел
- •Запис початкових даних
- •Додання
- •Другого множника
- •Зсув першого множника
- •Результати виконання програми
- •Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій
- •Теоретичні відомості
- •Арифметична операція додавання чисел в bcd кодах
- •2.2 Арифметична операція віднімання чисел в bcd кодах
- •2.3 Арифметична операція додавання/віднімання знакових чисел в bcd кодах
- •Перетворення чисел двійково-десяткового формату в двійковий формат і з двійкового формату в bcd-коди.
- •Карта пам'яті
- •Код програми
- •Зміст файлу lr6.Prn
- •Результати виконання програми
- •Теоретичні відомості
- •Додавання та віднімання багаторозрядних чисел цілого типу
- •Множення та ділення багаторозрядних чисел цілого типу
- •Арифметичні операції над дійсними числами
- •3.1 Арифметичні операції над числами в форматі з фіксованою комою
- •Арифметичні операції над числами в форматі з плаваючою комою
- •Код програми
- •Зміст файлу lr7.Prn
- •Результати виконання програми
Теоретичні відомості
Характеристика команд передачі керування. Команди передачі керування, які змінюють природний порядок вибірки і виконання команд програми в однокристальному МП КР580, можуть бути поділені на 4 підгрупи: переходу, виклику підпрограми, повернення з підпрограми, повторного пуску. Команди цієї групи не змінюють стану регістра ознак.
Команди передачі керування бувають двох типів: безумовні і умовні. Безумовні команди виконують певні операції із вмістом програмного лічильника PC, який вказує адресу наступної команди.
Умовні команди спочатку аналізують стан однієї з чотирьох ознак (перевіряють виконання умови) і в залежності від цього змінюють або не змінюють вміст програмного лічильника. Оскільки ознаки встановлюються за результатом попередньої операції, то передача керування залежить від результату операції.
Умови команд передачі керування такі:
NZ-Z=0, результат не нуль;
Z-Z=1, нуль;
NC-CY=0, немає переносу;
C-CY=1, є перенос;
РО-Р=0, непарність;
РЕ-Р=1, парність;
P-S=0, плюс;
M-S=1, мінус.
2. 0. CALL АДРЕСА - виклик підпрограми. ((SP)-1)<-PCH; ((SP)-2)<-PCL SP<-SP-2; PC<-АДРЕСА. Команда безумовного виклику підпрограми. Поточне значення лічильника команд (адреса команди, яка
йде за командою CALL) запам'ятовується в стеку. При цьому,
вказівник стека зменшується на 2. Початкова адреса підпрограми
задана в 2-у і 3-у байтах команди, завантажується в лічильник
команд. Внаслідок цього, після виконання команди CALL наступною виконуватиметься команда, адреса якої вказана у 2-у і 3-у байтах команди CALL.
Приклад: 0142 CALL 1045H
СТЕК<-0415; РС<1045.
Виклик підпрограми з адресою 1045Н.
2. 2. Команди переходів. 2. 2. 1. JMP J-АДРЕС- безумовний перехід.
PC J- АДРЕС- 3-й і 2-й байти команди.
Передати керування команді, адресу якої визначається 3-м і 2-м байтами команди, причому 3-й байт є старшим байтом адреси.
Приклад: JMP С000Н; PC <- С000.
Передати керування команді з адресою С000Н.
2. 2. 2. УМОВА АДРЕСИ - умовний перехід.
Якщо УМОВА, тоді PC <- АДРЕСА.
Якщо умова справджується, тоді передати керування команді, адреса якої визначається 3-м і 2-м байтами команди; в іншому випадку виконується подальша команда програми. З врахуванням умов існують 8 таких команд умовних переходів:
JNZ - перехід, якщо Z=0 (не нуль);
JZ - перехід, якщо Z=l (нуль);
JNC - перехід, якщо CY=0 (немає переносу);
JC - перехід, якщо CY=1 (перенос);
JPO - перехід, якщо Р=0 (непарність);
JPE - перехід, якщо Р=1 (парність);
JM - перехід, якщо 5=0 (мінус);
JP - перехід, якщо 5=1 (плюс).
Під час запису команд переходів на мові Асемблера адреса переходу задається в символьній формі (міткою). Після трансляції програми з мови Асемблера в об'єктний код символьна адреса замінюється двобайтовим числом.
2. 2. 3. PCHL; PC <- HL.
Безумовна передача керування команді, адреса якої визначається вмістом регістрової пари HL. При цьому, вміст регістра Н заноситься у вісім старших розрядів лічильника команд PC, а вміст регістра L - у вісім молодших.
2. 3. Програмування простих розгалужень. Команди переходів використовуються для організації розгалужень і циклів у програмах.
При розгалуженнях у програмі аналізуються деякі умови і в залежності від них або зберігається послідовний порядок виконання програми, або відбувається перехід на іншу частину програми. Індикаторами таких умов в мікропроцесорі виступають ознаки
(прапорці) Розглянемо принцип розгалуження на простому прикладі. У залежності від значення старшого розряду числа В необхідно перейти до двох різних міток програми: PLUS або MINUS. Загальний алгоритм рішення цієї задачі такий:
перевірити значення старшого розряду числа В;
якщо В=0, тоді перейти на програму PLUS;
якщо В=1, тоді перейти на програму MINUS.
Розглянемо декілька варіантів розв'язання цієї задачі.
Оскільки безпосередній аналіз числа в регістрі В неможливий, число з регістра В спочатку пересилається в акумулятор, потім над його вмістом виконується деяка арифметична або логічна операція для того, щоб в залежності від числа встановити деяку ознаку (Z, S, CY, P).
Варіант 1. (З аналізом ознаки Z).
також запам'ятовується у стеку, необхідно слідкувати, щоб до команди повернення RET кількість витягувань дорівнювала кількості занесень у стек.
Для забезпечення достатньої універсальності у специфікації кожної програми необхідно вказати місце знаходження даних, які обробляються підпрограмою, і результату, отриманого при її виконанні, а також регістри, які використовуються підпрограмою, вміст яких змінює підпрограма.
2. 4. Програмування циклів. Цикл у програмі-фундлментальна властивість програми ЕОМ- це засіб, який дозволяє за допомогою однієї і тієї ж послідовності команд виконати деякі дії багато разів. Загалом, цикл представляє собою групу команд, виконання яких багатократно повторюється за рахунок того, що в цій групі є команда, яка повертає керування знову на першу команду в групі команд, поки не виконається певна умова закінчення циклу.
Програмування циклів покажемо на прикладі обчислення суми ряду N чисел, які розміщені в пам'яті з певною адресою.
Для розв'язання задачі необхідно послідовно додавати кожне число ряду до поточної часткової суми. Можна написати програму, в якій для додавання кожного числа буде використовуватись окрема послідовність команд. Однак доцільно написати програму у вигляді циклу, який підраховує кількість сумованих чисел. Як лічильник циклу можна використати регістр, початкове значення якого можна встановити за межами циклу, а при кожній ітерації циклу
модифікувати і перевіряти (тестувати) його значення. У кожній ітерації необхідно забезпечити вибір подальшого числа.
У циклічній програмі можна виділити такі частини: ініціалізуючу, яка задає початкові дані і число ітерацій, основну роботу, модифікуючу і тест кінця циклу. Приклад організації програмного циклу:
MVI B, N ; завантаження в регістр В числа ітерацій
CYCL: ; основна частина
DCR В; підрахунок ітерацій
JNZ CYCL; перехід на повтор, якщо не кінець циклу
HLT ; кінець
У прикладних програмах часто необхідно декілька разів виконувати певну кількість послідовностей команд над різними вхідними даними. У цих випадках зручно послідовність команд, яка повторюється, включити в об'єктну програму лише 1 раз, а в потрібних точках спеціальними командами викликати її для виконання з поточними даними. Така послідовність команд (програма в програмі) називається підпрограмою, або процедурою.
Застосування підпрограм має такі переваги:
- складну програму можна розділити на невеликі порівняно прості в управлінні модулі, які можуть розроблятися декількома програмістами з відповідним скороченням термінів проектування програмного забезпечення;
- підпрограми скорочують довжину прикладних програм, що
забезпечує економію програмної пам'яті;
- відлагоджені підпрограми типових обчислень можна зберігати в бібліотеках і використовувати в нових розробках.
Команди виклику і повернення з підпрограм належать до групи команд керування, які змінюють послідовний порядок виконання команд програми. Стани прапорців не змінюються.