DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Арифметичні та логічні команди однокристального МП КР580

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

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

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

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

Про що ця робота

У звіті вивчено арифметичні та логічні команди однокристального мікропроцесора КР580. Набуто практичних навичок складання та налагодження асемблерних програм.

У роботі розглядаються

  • Мікропроцесор КР580
  • Арифметичні команди
  • Логічні команди
  • Асемблерне програмування
  • Обробка операндів
  • Регістри пам'яті

Зміст і розділи

  1. Мета роботи
  2. Короткі теоретичні відомості
  3. Постановка лабораторного завдання
  4. Текст програми
  5. Результати виконання програми
  6. Висновки
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Не вказано

Ключові поняття

прапорецьоперандкомандастекпам'ятьрозряд

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР Звіт про виконання лабораторної роботи №3 на тему: “ Арифметичні та логічні команди однокристального МП КР580 ” з курсу: “ Комп’ютери та мікропроцесорні системи ” Львів - 2006 1. МЕТА РОБОТИ Вивчити арифметичні та логічні команди однокристального мікропроцесора (МП) КР580, набути практичні навики складання і налагоджування програм з використанням цих команд. 2. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ Обчислювальні можливості МП КР580 визначають команди додавання і команди віднімання 8-бітних операндів. Операції множення і ділення, а також операції з іншими форматами даних реалізуються за допомогою підпрограм, які містять команди додавання і віднімання 8-бітних операндів. Це призводить до значного зменшення продуктивності МП-системи. Команди арифметичних операцій включають команди інкрементування (збільшення на 1) як 8-бітних, так і 16-бітних операндів. У групу арифметичних команд включена команда десяткової корекції аргументу. Вона дозволяє виконувати обробку двійково-кодованих десяткових чисел. У всіх командах арифметичних операцій допускається інтерпретація 8-бітних операндів як беззнакових цілих, так і знакових цілих чисел. Формат беззнакових цілих чисел такий: 7 6 5 4 3 2 1 0 значущі біти Формат знакових чисел такий: 7 6 5 4 3 2 1 0 S значущі біти знак Стандартне кодування знака має такий вигляд: S = 0 - число додатне, S = 1 - число від'ємне. Додатні числа представляються у прямому коді. Операцію віднімання МП реалізує як операцію додавання операндів у доповнюючому коді. У прямому коді біт s містить знак числа, а решту бітів містить абсолютне значення числа. Наприклад: число 56 -> 38Н 0011 1000 число (-75)  (-4В)Н 1100 1011 У доповнюючому коді зберігається загальний формат знакових цілих чисел. Додатні числа представляються без будь-яких змін, як в прямому коді. Отримання доповнюючого коду від'ємного числа (-Х) здійснюється за такою формулою Х доп. = 2**n - [X], де n - довжина машинного слова. Алгоритм отримання доповнюючого коду від'ємного числа містить такі кроки: 1. Записати n - бітний модуль від'ємного числа; 2. Отримати обернений код числа, інвертувавши усі біти; 3. До оберненого коду додати 1. Наприклад: (-83)  (-53)Н 1. модуль числа 0101 0011 2. обернений код числа 1010 1100 3. доповнюючий код числа 1010 1100 +______1 1010 1101 Двійково-кодовані десяткові числа представляються в упакованому форматі і складаються з двох тетрад. Молодша цифра займає праву тетраду (біти 3 : 0), старша-ліву (біти 7 : 4). 7 6 5 4 3 2 1 0 старша цифра молодша цифра Обидві цифри представляються своїми двійковими еквівалентами (кодом 8421 за двійковими вагами). Максимальне число, яке може містити тетрада - 9, а мінімальне -0. В арифметичних операціях важливе місце відводиться так званим ознакам або прапорцям, які показують особливості отриманого результату операцій. Команди арифметичних операцій діють на прапорці по-різному, але в загальному вони показують такі ознаки результату: CY - прапорець переносу (Саrr Y) в операції додавання (віднімання) встановлюється в 1 при наявності переносу (займу) із старшого біта результату: по суті, цей прапорець можна вважати розширенням результату на один біт вліво. S - прапорець знака (Sign) своїм станом повторює значення старшого (знакового) біта результату: Z - прапорець нуля (Zero) встановлюється в 1 при отриманні нульового результату 0000 0000: P - прапорець паритету (Parity), або парності встановлюється в 1 при наявності переносу (позики) з молодшої тетради результату в старшу. Найінтенсивніше в обчислювальних алгоритмах використовується прапорець CY. Саме завдяки йому малорозрядний МП може оперувати числами довільної розрядності. Прапорець АС дозволяє працювати з десятковими числами. Однокристальний МП КР580 може виконувати два типи арифметичних операцій (додавання і віднімання) з різними способами адресації. Команди цієї групи виконують арифметичні операції над даними в регістрах і комірках пам'яті. При виконанні арифметичних операцій усі ознаки (прапорці) встановлюються у відповідний стан у відповідності із загальними правилами. Вийнятки спеціально обумовлюються. 1. Додавання вмісту регістра до вмісту акумулятора. ADD r (A)  (A) + (r) Вміст регістра r(A,B,C,D,E,H,L) додається до вмісту акумулятора. Результат заноситься в акумулятор. Команда змінює стан прапорців Z,S,P,CY,AC за загальними правилами. 2. Додавання вмісту комірки пам'яті до вмісту акумулятора ADD M (A0  (A) + ((H)(L)) Вміст комірки пам'яті, адреса якої міститься в регістрах H і L, додається до вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці Z,S,P,CY,AC за загальними правилами. 3. Безпосереднє додавання ADI байт (A)  (A) + (байт 2) Вміст другого байта команди додається до вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці Z,S,P,CY,AC за загальними правилами. 4. Додавання вмісту регістра і біта прапорця переносу до вмісту акумулятора. ADC r (A)  (A) + (r) + (CY) Вміст регістра r(A,B,C,D,E,H,L) і біт прапорця переносу CY додається до вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці Z,S,P,CY,AC за загальними правилами. 5. Додавання вмісту комірки пам'яті і біта прапорця переносу до вмісту акумулятора ADC M (A)  (A) + ((H)(L)) + (CY) Вміст комірки пам'яті, адреса якої вказана в регістрах H і L, і вміст біта прапорця переносу додається до вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці Z,S,P,CY,AC за загальними правилами. 6. Безпосереднє додавання з бітом переносу ACI байт (A)  (A) + (байт 2) + (CY) Вміст другого байта команди і біта прапорця переносу додається до вмісту акумулятора. Результат записується в акумулятор. Команда впливає на прапорці Z,S,P,CY,AC за загальними правилами. 7. Віднімання вмісту регістра SUB r (A)  (A) - (r) Вміст регістра r(A,B,C,D,E,H,L) віднімається від вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці Z,S,P,CY,AC за загальними правилами. 8. Віднімання вмісту комірки пам'яті SUB M (A)  (A) - ((H)(L)) Вміст комірки пам'яті, адреса якої вказана в регістрах H і L , віднімається від вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці Z, S, P, CY, AC за загальними правилами. 9. Безпосереднє віднімання SUI байт (А)  (А) - (байт 2) Вміст другого байта команди віднімається від вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці Z,S,P,CY,AC за загальними правилами. 10. Віднімання вмісту регістра і біта переносу SBB r (А)  (А) - (r) - (CY) Вміст регістра r(A,B,С,D,Е,Н,L) і біт прапорця переносу CY віднімаються від вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на прапорці за загальними правилами. 11. Віднімання вмісту комірки пам’яті і біта переносу SBB M (A)  (A) - ((H)(L)) - (CY) Вміст комірки пам'яті, адреса якої міститься в регістрах і вміст біта прапорця переносу CY віднімаються від вмісту акумулятора. Результат заноситься в акумулятор. Команда впливає на усі прапорці за загальними правилами. 12. Безпосереднє віднімання з позикою SBI байт (A)  (байт 2) - (CY) Вміст другого байта команди і біт прапорця переносу CY віднімаються від акумулятора. Результат заноситься в акумулятор. Команда впливає на усі прапорці за загальними правилами. 13. Збільшення вмісту регістра INR r (r)  (r) + 1 Вміст регістра r(A,B,C,D,E,H,L) збільшується на 1. Команда впливає на стан усіх прапорців, крім прапорця переносу CY. 14. Збільшення вмісту комірки пам'яті INR M ((H)(L))  ((H)(L)) + 1 Вміст комірки пам'яті, адреса якої вказана в регістрах H і L, збільшується на одиницю. Команда впливає на стан усіх прапорців, крім прапорця переносу CY. 15. Зменшення вмісту регістра DCR r (r)  (r) -1 Вміст регістра r(A,B,C,D,E,H,L) зменшується на одиницю. Команда впливає на усі прапорці, крім прапорця переносу CY. 16. Зменшення вмісту комірки пам'яті DCR M ((H)(L))  ((H)(L)) – 1 Вміст комірки пам'яті, адреса якої міститься в регістрах H і L, зменшується на одиницю. Команда впливає на усі прапорці, крім прапорця переносу CY. 17. Збільшення вмісту пари регістрів на одиницю INX rp (rh)(rl)  (rh)(rl) + 1 Вміст пари регістрів rp збільшується на одиницю. Команда не впливає на прапорці. 18. Зменшення вмісту пари регістрів DCX rp (rh)(rl)  (rh)(rl) - 1 Вміст пари регістрів rp зменшується на одиницю. Команда не впливає на прапорці. 19. Додавання вмісту пари регістрів до вмісту регістрів H і L. DAD rp (H)(L)  (H)(L) + (rh)(rl) Вміст пари регістрів rp ((B,C), (D,E), (H,L), SP) додається до вмісту регістрів H і L. Використовується тільки прапорець переносу CY. Він встановлюється, коли має місце перенос при додаванні з подвійною точністю, в протилежному випадку він скидається. 20. Десяткове доповнення акумулятора DAA 8-бітне число в акумуляторі доповнюється до представлення у вигляді двох 4-бітних чисел в двійково-десятковому коді за допомогою таких операцій: - Якщо число, яке представлене чотирма молодшими бітами акумулятора, більше ніж 9, або встановлений прапорець допоміжного переносу АС, тоді до вмісту акумулятора додається 6; Якщо тепер число, яке представлене чотирма старшими бітами акумулятора, більше ніж 9, або встановлений прапорець переносу CY, тоді число 6 додається до числа, яке утворене чотирма старшими бітами акумулятора. Команда встановлює усі прапорці за загальними правилами. 21. Логічне множення вмісту регістра і акумулятора ANA R; (A)  (A) ^ (R); R:A,B,C,D,E,H,L. Над вмістом регістра загального призначення (РЗП) R і акумулятора виконується операція логічного множення. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлюються за загальними правилами. 22. Логічне множення вмісту комірки пам'яті і акумулятора ANA M; (A)  (A) ^ ((H)(L)) Над вмістом комірки пам'яті, адреса якої міститься в регістрах H і L, і вмістом акумулятора виконується операція логічного множення. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлєються за загальними правилами. 23. Логічне множення з безпосереднім операндом ANI d8; (A)(A) ^ (байт2); d8-константа довжиною в один байт. Над вмістом другого байта команди і акумулятора виконується операція логічного множення. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлєються за загальними правилами. 24. Логічне додавання вмісту акумулятора і регістра ORA v R; (A)  (A) v (R); R:A,B,C,D,E,H,L Над вмістом РЗП R і акумулятора виконується операція логічного додавання. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлєються за загальними правилами. 25. Логічне додавання вмісту комірки пам'яті і акумулятора ORA v M; (A)  (A) ((H)(L)) Вміст комірки пам'яті, адреса якої міститься в регістрах H і L, логічно додається до вмісту акумулятора. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлєються за загальними правилами. 26. Логічне додавання з безпосереднім операндом. ORI v d8; (A)  (A) (байт2) Вміст другого байта команди логічно додається до вмісту акумулятора. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлєються за загальними правилами. 27. Додавання за модулем 2 вмісту акумулятора і вмісту регістра XRA R; (A)  (A) Е (R); R:A,B,C,D,E,H,L До вмісту РЗП R додається по модулю 2 вміст акумулятора. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлюються за загальними правилами. 28. Додавання за модулем 2 вмісту комірки пам'яті і вмісту акумулятора XRA M; (A)  (A) Е ((H)(L)) До вмісту комірки пам'яті, адреса якої міститься в регістрах H і L, додається за модулем 2 вміст акумулятора. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлєютьтся за загальними правилами. 29. Додавання за модулем 2 з безпосереднім операндом XRI d8; (A)  (A) Е (d8) До вмісту акумулятора додається за модулем 2 вміст другого байта команди. Результат записується в акумулятор. Прапорці CY і AC скидаються в 0. Решта прапорців встановлєються за загальними правилами. 30. Доповнення акумулятора CMA; (A)  (A) Вміст акумулятора інвертується. Результат записується в акумулятор. Команда на прапорці не впливає. 31. Зсув вліво через прапорець переносу RAL; (CY)  (A7); (A0)  (CY); (An+1)  (An) Вміст акумулятора зсувається на одну позицію вліво через біт прапорця переносу CY. Молодший біт акумулятора дорівнює біту прапорця переносу CY, а CY - дорівнює величині старшого біта акумулятора. CY 7 6 5 4 3 2 1 0 Акумулятор Команда впливає лише на прапорець переносу CY. 32. Зсув вправо через прапорець переносу RAR; (A7)  (CY); (CY)  (A0); (An)  (An+1) Вміст акумулятора зсувається на одну позицію вправо через біт прапорця переносу CY. Біт CY дорівнює молодшому біту акумулятора, а старший біт акумулятора дорівнює біту прапорця переносу CY. CY 7 6 5 4 3 2 1 0 Акумулятор Команда впливає лише на прапорець переносу CY. 33. Циклічний зсув вліво RLC; (CY)  (A7); (A0)  (A7); (An+1)  (An) Вміст акумулятора зсувається вліво на одну позицію. Вміст старшого біта акумулятора заноситься в молодший біт і біт прапорця переносу CY. CY 7 6 5 4 3 2 1 0 Акумулятор Команда впливає лише на прапорець переносу CY. 34. Циклічний зсув вправо RRC; (CY)  (A0); (A7)  (A0); (An)  (An+1) Вміст акумулятора зсувається на одну позицію вправо. Вміст молодшого біта акумулятора заноситься в найстарший біт і біт пра-порця переносу. Команда впливає лише на прапорець переносу CY. 35. Встановлення біта прапорця переносу STC; (CY)  (1); Біт прапорця переносу встановлюється в 1. На інші прапорці команда не впливає. 36. Інвертування біта прапорця переносу CMC; (CY)  (CY) На інші прапорці команда не впливає. Постановка лабораторного завдання Використовуючи акумулятор, ввести дані 89, 71, 65, 58 в пам’ять. Виконати над ними дії: (1-2)+(3-4). Результат зсунути вліво на 2 розряди. Текст програми ORG 100H LXI H,800H MVI A,89 MOV M,A INX H MVI A,71 MOV M,A INX H MVI A,65 MOV M,A INX H MVI A,58 MOV M,A LDA 800H LXI H,801H SUB M MOV B,A LDA 802H LXI H,803H SUB M ADD B RAL RAL HLT Результати виконання програми  EMBED PBrush  Висновки: виконавши дану лабораторну роботу, я вивчив арифметичні та логічні команди МП КР 580 та набув практичні навики складання програм з використанням цих команд.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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