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

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

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

Рік:
2024
Тип роботи:
Звіт
Предмет:
Основи програмування
Група:
ЕК

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

Міністерство освіти і науки України Державний вищий навчальний заклад Дрогобицький механіко-технологічний коледж Звіт з практичної роботи №1 з предмету: «Основи програмування мікроконтролерів» Дрогобич 2010р. ТЕМА: Засоби компіляції, лінкування і налагодження програм в СР/М для мікропроцесора Intel 8080 (КР580ВМ80А) МЕТА: Вивчити засоби компіляції, лінкування і налогоджування програм за допомогою компілятора СР/М для мікропроцесора Intel 8080 (КР580ВМ80А) Теоретичні відомості СР/М (Control Program for Microprocessоrs) — операційна сисТЕМА для МПС (мікропроцесорних систем) на базі мікропроцесорів 8080, 8085, Z80, К580. Це діалогова сисТЕМА, розрахована на роботу з одним користувачем, що забезпечує файлову організацію програм і даних. Діалог організовується за допомогою команд системи. Набір команд, що найбільш використовуються подано нижче. Внутрішні команди СР/М DIR (Роздрук списку файлів): DIR Друкувати список файлів текучого диску; DIR *.* Друкувати список усіх файлів розміщених на текучому диску; DIR *.ext Друкувати список усіх файлів з розширенням "ext"; DIR filename.* Друкувати список усіх файлів з ім'ям "filename"; DIR filename.ext Друкувати ім'я тільки вказаного файлу. TYPE (Проглянути текстовий файл): TYPE filename.ext Проглянути на консолі файл " filename.ext " REN (Зміна назви файлу): REN newname.ext=oldname.ext Поміняти ім'я файлу з "oldname.ext" на "newname.ext". SAVE (Збереження оперативної пам'яті у файл на диску): SAVE n filename.ext Записати n сторінок оператівної пам'яті (одна сторінка = 256 байтів), починаючи з адреси 100h, на диск у файл "filename.ext". ERA (Затерти): ERA filename.ext Затерти вказаний файл; ERA filename.* Затерти усі файли з ім'ям " filename "; ERA *.ext Затерти усі файли з розширенням "ext"; ERA *.* Затерти усі файли на диску. Робота з компілятором СР/М Набір тексту програми здійснюється любим текстовим редактором. Файли, що містять початкові тексти програм пишуть з розширенням filename.asm . Компілятор СР/М запускається на виконання командою c.exe . Після цього з'являється промпт - [cpm]. Для виходу з системи набираєм [cpm] dos . Для компіляції необхідно запустити команду [cpm] m filename.asm . В результаті компіляції в СР/М утворяться файли: filename.prn . Після компіляції необхідно зібрати програму у виконавчий модуль, командою [cpm] l filename.asm . В результаті отримаєм файли filename.com Зкомпільовану та злінковану програму необхідно перевірити у режимі відлагодження. Для запуску програми у відлагоджувачі запускаєм команду [cpm] d filename.com . Інструментальні засоби динамічного відлагодження програм Команди відлагодження програми: DDT VERS 1.0 D Вивести тег (192 комірок) пам'яті у шістнадцятковому форматі вміст з текучої та подальших комірок; Наприклад, вивід тегу пам'яті з адреси 100h по 1BFh, (адреси вказані на початку рядків, а далі байти інформації записані по адресах від 0 до F) : DDT VERS 1.0 -D 0100 01 ВС 0F 56 67 78 89 90 8C 65 54 34 D1 11 45 38 0110 62 34 78 4A 29 30 C0 8F 45 D4 09 38 88 9E 44 02 0120 94 0F 69 59 4B 39 E2 72 8C 92 44 E0 72 51 F2 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 01B0 33 44 C6 78 11 D0 77 45 F4 53 B4 58 A5 28 39 46 D start Вивести тег пам'яті у шістнадцятковому форматі, починаючи з комірки, яка розміщена за вказаною адресою ("start"); D start,end Вивести комірки пам'яті у шістнадцятковому форматі, починаючи з адреси "start" і закінчуючи адресою "end"; F start,end,data Записати у файл усі комірки пам'яті з адреси "start" до адреси " end " шістнадцяткове значення " data "; Ifilename.ext Утворити блок управління файлом і записати його під ім'ям "filename.ext " для того, щоб можна було завантажити файл з таким ім'ям в оперативну пам'ять за допомогою команли " R "; R Завантажити в оперативну пам'ять вміст файлу, ім'я якого вказане в команді "I" починаючи з текучої комірки; R start Завантажити в оперативну пам'ять вміст файлу, ім'я якого вказане в команді "I" починаючи з комірки за адресою "start"; L Реасемблювати і вивести на консоль вміст подальших комірок пам'яті починаючи з текучої комірки; L start Реасемблювати і вивести на консоль вміст подальших комірок пам'яті починаючи з комірки за адресою "start"; L start,end Реасемблювати і вивести на консоль вміст подальших комірок пам'яті починаючи з комірки за адресою "start" і закінчуючи адресою "end"; S start Вивести в шістнадцятковому форматі і змінити вміст комірок пам'яті за адресою " start ", продовжуючи обробку подальших комірок пам'яті до вводу символа "."; A start Вставити, починаючи з адреси "start", оператор мови Асемблера. Продовжувати обробку подальших комірок пам'яті до вводу символа "."; M start1,end1,start2 Скопіювати вміст області пам'яті, яка розміщена з адреси "start1", по адресу "end1", в іншу область пам'яті, що розміщена з адреси "start2"; G Виконати усю програму без переривань, починаючи з текучої адреси; Gstart Виконати програму без переривань, починаючи з адреси "start"; Gstart,end Виконати програму без переривань, починаючи з адреси "start" і перервати виконання в точці за адресою "end"; Gstart,end1,end2 Виконати програму без переривань, починаючи з адреси "start" і перервати виконання або в точці за адресою "end1", або в точці за адресою "end2"; Gend Виконати програму без переривань, з текучої адреси і перервати виконання в точці за адресою "end"; Gend1,end2 Почати виконання програми без переривань, починаючи з текучої адреси і перервати виконання або за адресою "end1", або за адресою "end2"; X Вивести текучий вміст регістрів центрального процесора; Наприклад, після виконання команди X на екран виведеться рядок: C1Z0M1E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 LXI B,0FBC Xregister Вивести вміст регістра "register" центрального процесора. Unumber Виконати "number" машинних інструкцій і після їх завершення вивести вміст регістрів центрального процесора; Tnumber Трасування, виконання "number" машинних інструкцій, роздрукувати вміст регістрів центрального процесора після виконання кожної інструкції; Наприклад, після виконання команди T на екран виведеться рядок виконання команди LXI B,0FBC: C0Z0M0E0I0 A=00 B=0FBC D=0000 H=0000 S=0100 P=0103 JMP 013D Програмні засоби організації програми Директиви асемблера визначають порядок компілювання, розміщення в пам'яті інформації, присвоюють значення символьним іменам, резервують пам'ять та виконують ряд інших функций. Директиви або псевдокоманди не виконують дій над даними, а лиш використовуються як задають повідомлення в процесі компіляції на машинну мову. На початку асемблерної програми для МП КР580ВМ80А необхідно використовувати директиву ORG. Формат директиви: [мітка:] ORG < вираз > , < вираз > директиви задає 16-ти бітову адресу, яка вказує комірку пам'яті в яку буде завантажуватись перший байт наступної команди або байт даних. Для програм відлагоджувача СР/М рекомендується на початку асемблерної програми вказувати директиву ORG з заданням початкової адреси 100 h, наприклад ORG 100h ; Задається абсолютний адрес 100h LXI H, area1 ; Адрес=100h LXI D, area2 ; Адрес=103h . . . . HLT ; Остання команда Програмною моделю мікропроцесора називають сукупність апаратних вузлів однокристальної інтегральної схеми (КР580ВМ80А), вміст і стан яких можна аналізувати та змінювати за допомогою команд програми. Мікропроцесор КР580ВМ80А містить фіксовану систему з 78 мнемонік команд, які включають 111 операцій для реалізації прикладних програм. Інструментальні засоби динамічного відлагодження програми дозволяють конролювати основні програмно-доступні вузли МП під час виконання програми: C0Z0M0E0I0 A=00 B=0FBC D=0000 H=0000 S=0100 P=0103 C,Z,M,E,I - регістр прапорців (C-перенесення, Z-нуль, M-знак, E-допоміжне перенесення, I-парності кількості одиниць). А - акумулятор (8- розрядний результат заноситься в А), B (B,C), D(D,E), H(H,L) - регістрові пари(включають по парі 8-розрядних регістрів), B,C,D,E,H - 8-розрядні регістри загального користування (РЗК), S (SP) - 16- розрядний вказівник вершини стеку (stack pointer), P (PC) - 16- розрядний лічильник команд (program counter). ЗАВДАННЯ: 1. Набрати, скомпілювати та запустити програму задану викладачем. 2. Опрацювати осноні команди відлагоджувача програм СР/М. Міністерство освіти і науки України Державний вищий навчальний заклад Дрогобицький механіко-технологічний коледж Звіт з практичної роботи №2 з предмету: «Основи програмування мікроконтролерів» Виконав: ст. гр. ЕК-42 Сіроха С. М. Прийняв: Мураль М.М. Дрогобич 2010р. ТЕМА: Способи адресації операндів і команди пересилання даних однокристального МП КР580ВМ80А МЕТА: Вивчити способи адресації операндів і команди пересилання даних в однокристальному мікропроцесорі (МП) КР580ВМ80А, набути практичні навики складання і налагодження програм з використанням цих команд. Теоретичні відомості Способи адресації в МП КР580 Пам'ять МП КР580 має байтову структуру можлива адресація в пам'яті будь-якого байта. Ширина вибору з пам'яті - 1 байт. При звертанні до пам'яті використовуються 16-розрядні (двобайтові) адреси. Адресний простір МП КР580 становить 64 Кбайти. Нумерація бітів акумулятора, регістрів і байта пам'яті показана на рис. 1.  СисТЕМА команд МП КР580 містить 244 команди. Команди складаються з одного, двох або трьох байтів і знаходяться в пам'яті (оперативній або постійній). Багатобайтові команди зберігаються в сусідніх комірках пам'яті. В однобайтових командах байт використовується для задання коду виконуваної операції (рис.2,а). Однобайтові команди це команди обміну з пам'яттю, арифметичні, логічні, зсувів, операції зі стеком, керування системою переривань. Двобайтові команди - це команди з безпосереднім операндом або команди вводу/виводу (Рис.2,6). Перший байт команди містить код виконуваної операції, а другий - або безпосередній операнд, або операнд адреси порту вводу/виводу. Трибайтові команди містять у першому байті код виконуваної операції, а в другому або адреси пам'яті, або два байти безпосередніх даних (рис.2,в).  б)код операції дані або адреси До команд, які використовують цей формат, відносяться команди переходів до підпрограм, безумовних і умовних переходів, завантаження регістрів і пам'яті. Необхідно звернути увагу на спосіб написання адреси або безпосереднього операнда в трибайтовій команді. Другий байт команди містить молодшу половину адреси або безпосереднього операнда, а третій байт - старшу. 1.Операнд, який розуміється. В команді не задаються явно ні адреса операнда, ні він сам. Операнд розуміється і фактично задається кодом операції команди. найчастіше таким операндом є одиниця, що додається чи віднімається від попереднього значення числа Наприклад : INR А (Збільшити на 1 вміст акумулятора)  коп 2. Неявна адресація. При цьому способі адресації адреса одного або двох операндів неявне задається в йоді операції. Операція може, наприклад, виконуватися вмістом акумулятора , який адресується кодом команди і спеціамно його вказувати не потрібно. У МП КР580 перший операнд завжди знаходиться в акумуляторі, а другий може бути адресований прямо, непрямо або безпосередньо. Наприклад : DAA (Виконати десяткове доповнення акумулятора)  КОП 3. Безпосередня адресація. При безпосередній адресації оеранд є частиною виконуваної команди (рис. 3)  LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1)); PC - лічильник команд. Цей спосіб адресації використовується при необхідності включення в програму фіксованих значень (констант). У МП КР580 допускається безпосередньо адресувати 8-бітні (байт <В2>) і 16-бітні слова (<В2> - молодший байт, <ВЗ> - старший байт). Наприклад : ADI 80H  КОП 80Н Вміст другого байта команди додається до вмісту акумулятора. Результат записується в акумулятор. 4.Пряма регістрова адресація. У полі операндів команди задаються адреси регістрів загального призначення (РЗП) A,B,C,D,E,H,L (рис.4). РЗП  У МП КР580 використовується трирозрядне поле для вибору одного з семи РЗП. Наприклад : MOV Е,С  КОП КОДИ РЕГІСТРІВ Переслати операнд з регістра С в регістр Е. Коди регістрів Е-011, С-001. 5. Пряма адресація. У полі операнда міститься повна 1б-6ітна адреса байта пам'яті (рис.5)  За допомогою прямої адресації можна звертатип до будь-якого байта адресного простору. Наприклад : STA 800Н  КОП ВИКОНУВАНА АДРЕСА Вміст акумулятора пересилається в комірку пам'яті, адреса якої вказана у другому і третьому байтах команди (0800Н). 6. Непряма регістрова адресація. В адресному полі команди вказується код пари регістрів, в якій міститься адреса комірки пам'яті, де розміщені потрібні дані (рис.6).  Старші біти адреси зберігаються у першому регістрі пари, моЛодші- у другому. Наприклад : STAXB  КОД ПАРИ ВС Непрямий запис вмісту акумулятора в пам'ять. Вміст акумулятора пересилається в комірку пам'яті, адреса якої задана в парі регістрів ВС. 7. Стекова адресація. При стековій адресації реалізується безпосереднє завдання операнда. Дані заносяться в стек або зчитуються зі стеку, на початок якого вказує вміст вказівника стеку (SP). Наприклад PUSH В  КОД ПАРИ ВC 2.2. Команди пересилання даних МП КР580 1. Пересилання даних з регістра в регістр. MOV R1, R2; (R1) <- (R2). Вміст регістра R2 пересилається в регістр Rl. R1,R2 - регістри загального призначення (РЗП) A,B,C,D,E,H,L. Наприклад: MOV В,С; (В)<- (С). 2. Пересилання даних з пам'яті в регістр. MOV R,M ; (R)<-((H)(L)); R - A,B,C,D,E,H,L. Вміст комірки пам'яті, адреса якої знаходиться в регістрах Н і L пересилається в РЗП R. В регістрі Н задається старша половина адреси, в регістрі L - молодша половина. Наприклад, нехай вміст регістра Н - 08Н, вміст регістра L – СЕН MOV В,М ; (В)<-((08СЕН)). 3. Пересилання даних у пам'ять. MOV M,R ; ((Н)(L))<-(R); R - A,B,C,D,E,H,L. Вміст РЗП R пересилається в комірку пам'яті, адреса якої задається в парі регістрів Н і L. Наприклад, нехай вміст регістра Н - 08Н, вміст регістра L - EFH. MOV M,C ; ((08ЕFН))<-(С). 4. Безпосереднє пересилання даних у регістр. MVI R, D8; (R)<-(байт2); D8 - константа, довжина якої 1 байт; R - A,B,C,D,E,H,L. Вміст другого байта команди пересилається в РЗП R. Наприклад: MVI A,25H; (А)<-(25Н). 5. Безпосереднє пересилання даних у пам'ять. MVI M, D8 ; ((H)(L)<-(байт2). Вміст другого байта пам'яті пересилається у комірку пам'яті, адреса якої міститься в парі регістрів H i L. Наприклад, нехай вміст регістра Н - 08Н, вміст регістра L - 3ЕН. MVI M, 40H ; ((083ЕН))<-(40Н). 6. Безпосереднє завантаження пари регістрів LXI RP, D16; (rh)<-(байт3); (rl)<-(байт2) RP: B - BC, D - DE, H - HL. SP : D16 - константа, довжина якої 2 байти. Третій байт команди пересилається в с тарший регістр пари регістрів RP (rh), другий - в молодший регістр (rl). Наприклад : LXI B,FFEDH ; (C)<-(FFH); (B)<-(EDH) LXI SP.BCDH ; (SP)<-(0BCDH). 7. Пряме завантаження акумулятора. LDA ADDR; (А)<-((байтЗ)(байт2)); ADDR - 16-бітна адреса. Вміст комірки пам'яті, адреса якої вказана в другому і третьому байтах команди, пересилається в акумулятор. Наприклад: LDA 0543Н ; (А)<-((0543H)). 8. Прямий запис вмісту акумулятора в пам'ять. STAADDR ; ((байтЗ)(байт2))<-(А). SHLD ADDR ; ((ADDR))<-(L); ((ADDR+1))<-(H). Вміст акумулятора пересилається в комірку пам'яті, адреса якої задана у другому і третьому байтах команди. Наприклад: STA 083DH ; ((083DH))<-(A). 9. Пряме завантаження пари регістрів Н і L. LHLD ADDR; (L)<-((байтЗ)(байт2)); (Н)<-((байт3)(байт2)+1). У регістр L пересилається вміст комірки пам'яті, адреса якої задається другим і третім байтами команди, а в регістр Н - вміст комірки пам'яті з подальшою адресою. Наприклад: LHLD 08BCH ; (L)<-((08ВСН)); (H)<-((08ВОН)). 10. Прямий запис вмісту пари регістрів HL в пам'ять. SHLD ADDR; ((байтЗ)(байт2))<-(L); ((6айтЗ)(6айт2)+1)<-(H). Вміст регістра L пересилається в комірку пам'яті, адреса якої задається 2-м і 3-м байтами команди, а регістр Н - в комірку з подальшою адресою. Наприклад : SHLD 08DDH ; ((08DDH))<-(L); ((08DE))<-(H). 11. Непряме завантаження акумулятора. LDAX RP ; (A)<-((rh)(rl)); RP: B-BC, D-DE. В акумулятор пересилається вміст комірки пам'яті, адреса якої задається в парі регістрів RP. Наприклад, нехай вміст регістра В-08Н, вміст регістра С - D2H LDAX В ; (A)<-(08D2H). 12. Непрямий запис вмісту акумулятора в пам'ять. STAX RP ; ((rh)(rl))<-(А); RP: В- ВС, D- DE. Вміст акумулятора пересилається в комірку пам'яті, адреса якої задається парою регістрів RP. Наприклад, нехай вміст регістра D-08Н, вміст регістра Е - 01Н STAX D ; ((0801Н))<-(А). 13. Обмін даними між парами регістрів HL і DE. XCHG; (Н) <->(D) ; (L) <-> (Е). Вміст регістрів HL взаємно обмінюється із вмістом регістрів DE. Розглянемо інші операції пересилання, які потребують не однієї, а більшого числа команд. 14. Пряме завантаження будь-якого регістра, відмінного від акумулятора. LDA ADDR ; (A)<-((ADDR)); MOV REG,A; (REG)<-(A), або LXI H,ADDR ; (H)(L)<-(ADDR); MOV REG,M ; (REG)<-((H)(L)). 15. Непряме завантаження будь-якого регістра з комірки пам'яті, адреса якої міститься в комірках ADDR і ADDR+1. MOV REG,M ; (REG)«-((H)(L)). 16. Пряме завантаження будь-якої пари регістрів, крім пари HL. завантаження регістрової пари DE : LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1)) XCHG , (H)<->(D); (L)<->(E); завантаження регістрової пари ВС : LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1)) MOV B,H ; (В)<-(Н) MOV C,L ; (С)<-(L); завантаження вказівника стека : LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1)); SPHL ; (SP)<-(H)(L). 17. Пряме запам'ятовування будь-яких регістрів, відмінних від акумулятора. MOV A,REG ; (A)<-(REG); STA ADDR ; ((ADDR))<-(A). або LXI H,ADDR ; (H)(L)<-(ADDR); MOV M, REG; ((H)(L))<-(REG) 18. Непряме запам'ятовування будь-якого регістра в комірці пам'яті, адреса якої міститься в комірках ADDR і ADDR+1. LHLD ADDR ; (L)<-((ADDR)); (H)<-(ADDR+1)); MOV M,REG ; ((H)(L))<-(REG). 19. Пряме запам'ятовування будь-якої тіари регістрів, крім регістрової пари HL. запам'ятовування регістрової пари DE : XCHG; (H)<->(D); (L)<->(E); SHLD ADDR; ((ADDR))<-(L); ((ADDR+1))<-(H); запам'ятовування регістрової пари ВС : MOV Н,В ; (Н)<-(В); MOV L,C ; (L)<-(C); SHLD ADDR ; ((ADDR))<-(L); ((ADDR+1))<-(H). 20. Запам'ятати однобайтову константу VAL8 за адресою ADDR. MVI A,VAL8 ; (А)<-(VAL8); STA ADDR ; ((ADDR))<-(A), або LXI H, ADDR; (H)<-(ADDR); MVI M, VAL8; ((H)(L))<-(VAL8); 21. Запам'ятати двобайтову константу VAL16 у комірках пам'яті з адресами ADDR і ADDR+1. LXI H,VAL16 ; (H)(L)<-(VAL16); 22. Запам'ятати однобайтову константу VAL8 у комірці пам'яті з адресою, що міститься в комірках ADDR і ADDR+1 LHLD ADDR; (H)(L)<-(ADDR) MVI M,VAL8; ((H)(L))<-(VAL8). 2.3. Стек і команди роботи зі стеком в однокристальному МП КР580 Стек - це область оперативної пам'яті, яка адресується за допомогою вказівника стека (SР)(І6-розрядного програмне доступного регістра). На початку роботи зі стеком ініціалізується нижня межа стека (рис.7).  При записуванні інформації в стек він зростає в бік молодших адрес. У МП КР580 стекові операції виконуються з 1б-бітними словами. У стек можна записувати тільки вміст регістрових пар і отримувати інформацію зі стека можна лише у регістрові пари. Розглянемо команди роботи зі стеком. 1. Занесення в стек вмісту пари регістрів : PUSH RP ; RP: В- ВС, D- DE, Н- HL; ((SP)-1)<-(rh); ((SР)-2)<-(rl); (SP)<-(SP)-2. Послідовність дій МП при виконанні команди PUSH Н така : • вміст вказівника стека зменшується на 1: (SP)<-(SP)-1; в комірку пам'яті за адресою ((SP)-l) записується вміст регістра Н; вміст вказівника стека зменшується на 1: (SP)<-(SP)-!; комірку пам'яті за адресою ((SP)-2) записується вміст регістра L : ((SP)-2)<-(L). 2. Зчитування зі стека вмісту пари регістрів. POP RP ; . (rl)<-((SP)); (rh)<-((SP)+l); (SP)<-((SP)+2). Вміст комірки пам'яті, адреса якої визначається вмістом вказівника стека SP, пересилається в молодший регістр пари регістрів RP. Вміст наступної за зростанням адреси комірки пересилається в старший регістр пари. Вміст вказівника стека збільшується на 2. 3. Обмін вмісту верхівки стека і вмісту пари HL. XTHL;(L)<->((SP)); (H)<->((SP)+l); 4. Пересилання вмісту регістрів Н і L у вказівник стека. SPHL; (SP)<--J-- (H)(L). Вміст регістрів Н і L (16 біт) пересилається у вказівник стека. 5. PCHL; (H)(L)-> (PC) Завдання до практичної роботи(виконати згідно порядкового номера в журналі): Ввести в пам’ять використовуючи стек послідовність даних 201-206, прочитати з пам’яті в регістрову пару 201 і 206. Ввести безпосередньо в пам’яті послідовність даних 101-106, вивести з найменшого послідовно через акумулятор в регістри загального призначення. Записати в пам’ять числа 131-136, вивести через стек числа 133, 134 та записати у регістри D,H. Ввести в пам’ять через акумулятор послідовність чисел 21-26, прочитати дані з пам’яті і записати в регістровs пари B,D,H. Ввести послідовність чисел 3,66,96,12,15,18 через акумулятор в пам’ять, зчитати з пам’яті в регістри загального призначення. Записати послідовність з шісти даних через аккумулятор в пам’ять зчитати через стек і записати врегістрові пари B,D,H. Ввести через регістрову пару послідовність чисел в пам’ять 181-186. Зчитати з пам’яті в акумулятор та регістрі пари B, D перші 5 чисел з послідовності. За допомогою команд стеку записати в пам’ять послідовність даних 44, 55, 66, 77,88, 99. Прочитати з пам’яті через акумулятор перше і останнє числа записати в регістри H, C . Через акумулятор заповнити пам’ять даних 14, 15, 16, 17, 18, 19. Вивести з пам’яті 4, 5, 6 –е дані в регістри загального користування E,H,L. Записати в пам’ять використовуючи стек дані 101-107. Прочитати з пам’яті через акумулятор і записати РЗК. Через регістрову пару записати в пам’ять дані 11-16, зчитати з пам’яті через акумулятор ці дані.Зчитати з пам’яті дані в РЗК –A,B,C,D,E,L.. Через регістрову пару ввести послідовність даних 69,68,…64 в пам’ять і прочитати записавши в регістри B,L в зростаючому порядку. Через регістрову пару ввести в пам’ять послідовність з шести даних 232,233-237. Використовуючи команди стеку вивести дані у регістрові пари. Використовуючи акумулятор ввести в пам’ять послідовність чисел 9,8-3.Через регістрову пару прочитати з пам’яті у зростаючому порядку ці числа заповнивши РЗК. Ввести безпосередньо в пам’ять дані 11,12-16. Прочитати з пам’яті третє і останнє дане і записати в регістрову пару D. Записати послідовність даних у пам’ять за допомогою команд стеку (255,254,253-250). Вивести з пам’яті через акумулятор від 250 до 253. Записати послідовність чисел 11-16 через тек у пам’ять, вивести з пам’яті у зворотньому порядку послідовно через акумулятор. Ввести в пам’ять за допомогою команд стеку послідовність даних 49-44 вивести з пам’яті з найменшого і заповнити регістрові пари B,D,H. Ввести в пам’ять через акумулятор послідовність з 6 даних 45, 127, 99, 43, 18, 22 прочитати з пам’яті заповнити ними регістрові пари. Ввести в пам’ять 2 байти даних, прочитати з пам’яті і одним заповнити регістри загального призначення Е іншим акумулятор. Через регістрову пару записати в пам’ять послідовність даних: 17,19,15,13,12,11, третій і четвертий елемент прочитати за допомогою команд стеку і ввести в регістрову пару H. Ввести в пам’ять через команди стеку послідовність з 6-ти даних: 111, 112, 113, 114, 115, 116. Прочитати 5 і 6-й елемент і записати в регістрову пару D. Ввести в пам’ять через регістрову пару D послідовність 62, 16, 12, 46, 55, і прочитати з пам’яті в акумулятор, «вказівник стеку», регістрову пару В. Через акумулятор заповнити пам’ять даними 101, 102, 103, 104, 105, 106. Прочитати з більшого заповнивши послідовно L,H,E,D,C,B. Ввести 4 байти будь-яких даних в пам’ять через команди стеку і після цього вивести з пам’яті в регістри B, C, D, E. Міністерство освіти і науки України Державний вищий навчальний заклад Дрогобицький механіко-технологічний коледж Звіт з практичної роботи №3 з предмету: «Основи програмування мікроконтролерів» Виконав: ст. гр. ЕК-42 Сіроха С. М. Прийняв: Мураль М.М. Дрогобич 2010р. ТЕМА: Арифметичні та логічні команди однокристального МП КР580 МЕТА: Вивчити арифметичні та логічні команди однокристального МП КР580 набути практичні навики складання і налагоджування програм з використанням цих команд Теоретичні відомості Обчислювальні можливості МП КР580 визначають команди додавання і команди віднімання 8-бітних операндів. Операції множення і ділення, а також операції з іншими форматами даних реалізуються за допомогою підпрограм, які містять команди додавання і віднімання 8-бітних операндів. Це призводить до значного зменшення продуктивності МП-системи. Команди арифметичних операцій включають команди інкрементування (збільшення на 1) як 8-бітних, так і 16-бітних операндів. У групу арифметичних команд включена команда десяткової корекції аргументу. Вона дозволяє виконувати обробку двійково-кодованих десяткових чисел. У всіх командах арифметичних операцій допускається інтерпретація 8-бітних операндів як беззнакових цілих, так і знакових цілих чисел. Формат беззнакових цілих чисел такий:  Стандартне кодування знака має такий вигляд: S = 0 - число додатне, S = 1 - число від'ємне. Додатні числа представляються у прямому коді Операцію віднімання МП реалізує як операцію додавання операндів у доповнюючому коді У прямому коді біт s містить знак числа, а решту бітів містить абсолютне значення числа. Наприклад: число 56 -> 38Н  число (-75) -> (-4В)Н  У доповнюючому коді зберігається загальний формат знакових цілих чисел. Додатні числа представляються без будь-яких змін, як в прямому коді Отримання доповнюючого коду від'ємного числа (-Х) здійснюється за такою формулою  де n - довжина машинного слова. Алгоритм отримання доповнюючого коду від'ємного числа містить такі кроки: Записати n - бітний модуль від'ємного числа; Отримати обернений код числа, інвертувавши yd біти; До оберненого коду додати 1. Наприклад: (-83) -> (-53)Н модуль числа 0101 0011 обернений код числа 1010 1100 доповнюючий код числа  Двійково-кодовані десяткові числа представляються в упакованому форматі і складаються з двох тетрад. Молодша цифра займає праву тетраду (біти 3: 0), старша-ліву (біти 7: 4).  Обидві цифри представляються своїми двійковими еквівалентами (кодом 8421 за двійковими вагами). Максимальне число, яке може містити тетрада - 9, а мінімальне -0. В арифметичних операціях важливе місце відводиться так званим ознакам або прапорцям, які показують особливості отриманого результату операцій. Прапорці МП КР580 зберігаються в регістрі F, який має таку структуру:  Через X позначені біти, які не використовуються. Команди арифметичних операцій діють на прапорці по-різному, але в загальному вони показують такі ознаки результату: CY - прапорець переносу (Carr Y) в операції додавання (віднімання) встановлюється в 1 при наявності переносу (займу) із старшого біта результату: по суті, цей прапорець можна вважати розширенням результату на один біт вліво. S - прапорець знака (Sign) своїм станом повторює значення старшого (знакового) біта результату: Z - прапорець нуля (Zero) встановлюється в 1 при отриманні нульового результату 0000 0000: Р - прапорець паритету (Parity), або парності встановлюється в 1 при наявності переносу (позики) з молодшої тетради результату в старшу. Найінтенсивніше в обчислювальних алгоритмах використовується прапорець CY. Саме завдяки йому малорозрядний МП може оперувати числами довільної розрядності Прапорець АС дозволяє працювати з десятковими числами. Однокристальний МП КР580 може виконувати два типи арифметичних операцій (додавання і віднімання) з різними способами адресації Команди цієї групи виконують арифметичні операції над даними в регістрах і комірках пам'яті При виконанні арифметичних операцій усі ознаки (прапорці) встановлюються у відповідний стан у
Антиботан аватар за замовчуванням

30.05.2013 17:05-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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