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

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

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

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Мікропроцесори

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

Міністерство освіти і науки, молоді та спорту України Прикарпатський національний університет імені Василя Стефаника Кафедра радіофізики і електроніки Лабораторна робота №2 Команди пересилання даних восьмирозрядного мікропроцесора КР580ВМ80 (Intel 8080). Івано-Франківськ – 2011 1. Мета роботи Вивчити основні типи команд пересилання даних та послідовність їх виконання восьмирозрядним мікропроцесором, навчитися створювати програми з їх використанням. 2. Обладнання Програма - емулятор мікропроцесорної системи на базі одно-кристального КР580ВМ80. 3. Короткі відомості з теорії 3.1. Команди пересилання даних та способи адресації, які вони використовують. Команди пересилання даних використовуються мікропроцесором для передавання даних в різні пристрої зберігання інформації, які є в його розпорядженні, як в регістри, так і в комірки оперативної пам'яті. Розрізняють такі типи команд: завантаження, пересилання регістр - регістр, запис в пам'ять та зчитування з пам'яті (пересилання пам'ять - регістр). Команди пересилання даних фактично є командами копіювання даних, оскільки під час виконання команди дані, які містить джерело, не руйнуються. Код операції в команді пересилання даних задає джерело даних S (Source), приймач даних D (Destination) і спосіб їхньої адресації (Коди джерел та приймачів даних наведено в Табл.1). Мікропроцесор КР580ВМ80, як відомо, використовує чотири види адресації: безпосередню, пряму, регістрову та непряму. Кожен із видів адресації може бути використаний як для джерела так і для приймача даних. З шістнадцяти можливих комбінацій в мікропроцесорі КР580ВМ80 для команд завантаження даних використовується сім: безпосередня / регістрова безпосередня / непряма регістрова / регістрова регістрова / пряма регістрова / непряма пряма / регістрова непряма / регістрова S/D код S/D код  Регістр B 000b / 0q Регістр H 100b / 4q  Регістр C 001b / 1q Регістр L 101b / 5q  Регістр D 010b / 2q Память M 110b / 6q  Регістр E 011b / 3q Регістр A 111b / 7q  Таблиця 1. Коди джерел та приймачів даних. Безпосередня адресація використовується в тому випадку, коли необхідно завантажити початкові дані в регістри або пам'ять, чи константи, які будуть використовуватися на протязі роботи програми. Безпосередня адресація є зручною, наочною і може використовуватись для початкової розробки програми. Недоліком є те, що програми, написані з її використанням не мають достатньо гнучкості, а саме: для того, щоби змінити значення констант або початкових даних, необхідно переписувати код програми. Також недоліком є те, що програмний код займає більше комірок пам'яті (2, або 3) та виконується за більше циклів (2 або 3), ніж в випадку регістрової адресації. Безпосередня адресація часто використовується для завантаження одного з регістрів початковим значенням кількості циклів, які необхідно виконати, та наступним зменшенням значення регістра на 1 після виконання тіла циклу. Регістрова адресація використовується головним чином для пересилання проміжних даних які виникають в процесі роботи програми. Пересилання між регістрами займають найменше часу (1 цикл, 4 або 5 тактів), тому їх використовують для скорочення часу виконання програм. Програмний код займає найменше пам'яті, що теж є перевагою даного виду адресації. Недоліком регістрової адресації є те, що кількість регістрів для зберігання проміжних даних є обмежена (6 однобайтних B, C, D, E, H, L), що недостатньо для роботи навіть не дуже складних програм. Тому одним із принципів розробки перспективних процесорів RISC є вимога наявності великої кількості однотипних регістрів. Пряма адресація використовується тоді, коли кількість проміжних даних перевищує кількість наявних внутрішніх регістрів. Як правило, програміст виділяє під зберігання вхідних, проміжних та вихідних даних програми деяку область оперативної пам'яті, яка не повинна перекриватись з областю програмного коду та областю стека. Якщо таке перекриття відбувається, то результат дії програми неможливо передбачити. Область даних оперативної пам'яті в такому випадку чітко визначається кількістю змінних програми, тому мови високого рівня, які написані, в основному, на мові асемблера чи машинному коді, вимагають попереднього оголошення змінних на початку роботи програми. Область даних програми зручно розміщувати в тілі програми, для того щоби завантаження підпрограм зі зміщеним кодом не перекривалось з цією областю. Незважаючи на те, що пряма адресація вимагає трибайтних команд, та додаткових двох циклів для завантаження адреси комірки пам'яті + 1 цикл завантаження даних з комірки пам'яті, використання її є більш ефективним, ніж використання непрямої адресації, для якої спочатку слід забезпечити занесення адреси комірки пам'яті в відповідну пару регістрів. Непряма адресація використовується в основному для роботи з областю стеку, а також для зберігання та завантаження даних в/з суміжних комірок пам'яті, які використовуються для організації масивів. За допомогою непрямої адресації також можна організовувати масиви змінної довжини типу вказівник або список. Програмний код з командами, які використовують непряму адресацію займає менше місця, є достатньо гнучким та зручним для перенесення на інші процесори. В випадку організації списків чи вказівників, необхідно чітко слідкувати за тим, щоби кількість байтів, занесених в пам'ять, завжди рівнялась кількості вибраних, в іншому випадку результат дії програми буде непередбачуваним. В таблиці 1. лабораторної роботи №1 всі команди пересилання даних відмічені оранжевим (однобайтові пересилання) та жовтим (двобайтові пересилання) кольорами. 3.2. Машинні цикли мікропроцесора КР580ВМ80. Команди в КР580ВМ80 виконуються як послідовність внутрішніх мікрокоманд. Кожна з мікрокоманд виконується на протязі одного циклу, тривалість якого складає 3-5 тактів. Кількість машинних циклів та загальна кількість тактів визначається типом команди. Всього є 10 типів машинних циклів: вибірка команди; зчитування слова з запам'ятовуючого пристрою запис слова в запам'ятовуючий пристрій зчитування слова зі стеку запис слова в стек зчитування слова з пристрою введення/виведення запис слова в пристрій введення/виведення підтвердження переривання підтвердження зупинки підтвердження переривання під час зупинки. Перший цикл завжди є цикл вибірки команди і займає 4 або 5 тактів. Три наступних цикли завжди виконуються за три такти, а п'ятий за три або п'ять тактів. З огляду на це завжди можна розрахувати кількість циклів і тактів команди, якщо відомо способи адресації, які вона використовує. Наприклад: команда MVI М, B2 двобайтова, використовує безпосередню/непряму адресацію. Під час виконання команди дані, які містяться в другому байті програми, завантажуються в комірку пам'яті, адреса якої знаходиться в регістровій парі HL. Перший цикл - вибірка першого байта з пам'яті (4 або 5 тактів), наступний - вибірка другого байта (3 такти). Ще один цикл - запис даних в комірку пам'яті (3 такти). Отже команда виконується за 3 цикли 10 або 11 тактів. (насправді 10 тактів). 3.3.Команди пересилання мікропроцесора КР580ВМ80. Команди мікропроцесора КР580ВМ80 зручно вивчати згідно такої схеми: 1 Назва  2 Способи адресації, які використовує команда  3 Мнемонічна форма запису  4 Дії, які виконує команда в формі логічних символів  5 Машинний код команди в   шістнадцятковій системі вісімковій системі  6 Довжина команди, кількість циклів, кількість тактів  7 Опис дій команди  8 Дія результату виконання команди на регістр станів мікропроцесора   Увага! Наведена схема відноситься не тільки до даної лабораторної роботи, але і до наступних робіт з вивчення системи команд мікропроцесора КР580ВМ80. 3.3.1. Команди завантаження. 1 Завантаження регістра  2 безпосередня / регістрова  3 MVI r, B2  4 B2 → r  5 06h, 16h, 26h, 0Eh, 1Eh, 2Eh, 3Eh 0D6q (D ≠ 6)  6 Команда займає 2 байта пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди дані, які знаходяться в другому байті програми, завантажуються в регістр за номером D.  8 Виконання команди не впливає на регістр стану.   Номер D береться з Табл.1. Наприклад для регістра Е код 011b, або 3q. Тому команда завантаження регістра Е числом, наприклад 3Ah, виглядає таким чином: MVI Е, 3A = 1Е, 3А, або в вісімковій системі числення  чи в шістнадцятковій системі числення  1 Завантаження регістрової пари BC (DE, HL)  2 безпосередня / регістрова  3 LXI B, B2, B3 (LXI D, B2, B3; LXI H, B2, B3)  4 B3 → B, B2 → C (B3 → D, B2 → E; B3 → H, B2 → L)  5 01h (11h; 21h) 001q (021q; 041q)  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Під час виконання команди третій байт команди записується в регістр B (D, H), другий байт команди записується в регістр C (E, L).  8 Виконання команди не впливає на регістр стану.   1 Завантаження регістра SP - вказівника стеку  2 безпосередня / регістрова  3 LXI SP, B2, B3  4 B3, B2 → SP  5 31h 061q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Під час виконання команди другий (молодший) та третій (старший) байти команди записується в регістр SP.  8 Виконання команди не впливає на регістр стану.  Команда LXI SP буде детально розглядатись в лабораторній роботі по вивченню стеку і команд роботи з ним. 1 Завантаження комірки пам'яті  2 безпосередня / непряма  3 MVI М, B2  4 B2 → М(H, L)  5 36h 066q  6 Команда займає 2 байта пам'яті, виконується за 3 цикли, 10 тактів.  7 Під час виконання команди дані, які містяться в другому байті програми, завантажуються в комірку пам'яті, адреса якої знаходиться в регістровій парі HL.  8 Виконання команди не впливає на регістр стану.  Перед завантаженням комірки пам'яті командою MVI М, B2 необхідно завантажити пару HL адресою комірки. 3.3.2. Команди пересилання регістр-регістр 1 Пересилання з регістра в регістр  2 регістрова / регістрова  3 MОV r1, r2  4 r2 → r1  5 40h-45h, 47h-4Dh, 4Fh 50h-55h, 57h-5Dh, 5Fh 60h-65h, 67h-6Dh, 6Fh 78h-7Dh, 7Fh 1DSq (D ≠ 6, S ≠ 6)  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 5 тактів.  7 Під час виконання команди дані, які містяться в регістрі за номером S пересилаються в регістр за номером D.  8 Виконання команди не впливає на регістр стану.  Номери D та S беруться з Табл.1. аналогічно, як і для команди MVI r, B2. 1 Обмін даними між регістрами HL та DE  2 регістрова / регістрова  3 XCHG  4 H ↔ D, L ↔ E  5 EBh 353q  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди регістри H, L обмінюються даними з регістрами D, E.  8 Виконання команди не впливає на регістр стану.   1 Завантаження регістра SP - вказівника стеку  2 регістрова / регістрова  3 SPHL  4 HL → SP  5 F9h 371q  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 5 тактів.  7 Під час виконання команди дані, які містяться регістрі HL завантажуються у вказівник стеку SP.  8 Виконання команди не впливає на регістр стану.  Команда SPHL буде детально розглядатись в лабораторній роботі по вивченню стеку і команд роботи з ним. 1 Завантаження лічильника команд PC (непрямий перехід)  2 регістрова / регістрова  3 PCHL  4 HL → PC  5 E9h 351q  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 5 тактів.  7 Під час виконання команди дані, які містяться в регістрі L пересилаються в молодший байт лічильника команд РС, а дані, які містяться в регістрі H - в старший байт. Керування передається команді, яка буде занесена в PC.  8 Виконання команди не впливає на регістр стану.  Команда PCHL фактично є командою безумовного переходу і до команд пересилання даних віднесена завдяки подібності порядку виконання. 3.3.3. Команди запису в пам'ять 1 Пересилання з регістра в пам'ять  2 регістрова / непряма  3 MОV М, r  4 r → М(H, L)  5 70h - 75h, 77h 16Sq (S ≠ 6)  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди дані, які містяться в регістрі за номером S пересилаються в комірку пам'яті, адреса якої знаходиться в регістровій парі HL.  8 Виконання команди не впливає на регістр стану.  Перед пересиланням в комірку пам'яті командою MОV М, r необхідно завантажити пару HL адресою комірки. 1 Збереження акумулятора  2 регістрова / пряма  3 STA, B2, B3  4 A → М(B3, B2)  5 32h 062q  6 Команда займає 3 байта пам'яті, виконується за 4 цикли, 13 тактів.  7 Під час виконання команди дані, які містяться в акумуляторі А, пересилаються в комірку пам'яті, адреса якої знаходиться в другому та третьому байтах команди. (B2 - молодший байт адреси, B3 - старший байт адреси)  8 Виконання команди не впливає на регістр стану.   1 Збереження акумулятора  2 регістрова / непряма  3 STAX B (STAX D)  4 A → М(B, C) (A → М(D, E))  5 02h (12h) 002q (022q)  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди дані, які містяться в акумуляторі А, пересилаються в комірку пам'яті, адреса якої знаходиться в регістровій парі BC (DE). (B (D) - старший байт адреси, C (E) - молодший байт адреси)  8 Виконання команди не впливає на регістр стану.  Перед збереженням в комірку пам'яті командою STAX B (STAX D) необхідно завантажити відповідну регістрову пару адресою комірки. 1 Збереження регістрової пари HL  2 регістрова / пряма  3 SHLD, B2, B3  4 L → M(B3, B2), H → M(B3, B2+1)  5 22h 042q  6 Команда займає 3 байти пам'яті, виконується за 5 цикли, 16 тактів.  7 Під час виконання команди дані, які містяться в регістрі L пересилаються в комірку пам'яті, адреса якої знаходиться в другому та третьому байтах команди. Дані, які містяться в регістрі H пересилаються в наступну комірку пам'яті. (B2 - молодший байт адреси, B3 - старший байт адреси)  8 Виконання команди не впливає на регістр стану.   3.3.4. Команди зчитування з пам'яті 1 Пересилання з пам'яті в регістр  2 непряма / регістрова  3 MОV r, М  4 М (H, L)→ r  5 46h, 56h, 66h, 4Еh, 5Еh, 6Еh, 7Еh 1D6q (D ≠ 6)  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди дані, які містяться в комірці пам'яті, адреса якої знаходиться в регістровій парі HL, пересилаються в регістр за номером D.  8 Виконання команди не впливає на регістр стану.   1 Завантаження акумулятора  2 пряма / регістрова  3 LDA, B2,B3  4 М(B3, B2) → A  5 3Ah 072q  6 Команда займає 3 байта пам'яті, виконується за 4 цикли, 13 тактів.  7 Під час виконання команди дані, які містяться в комірці пам'яті, адреса якої знаходиться в другому та третьому байтах команди, пересилаються в акумулятор А.. (B2 - молодший байт адреси, B3 - старший байт адреси)  8 Виконання команди не впливає на регістр стану.   1 Завантаження акумулятора  2 непряма / регістрова  3 LDAX B (LDAX D)  4 М(B, C)→ A (М(C, E)→ A)  5 0Ah (1Ah) 012q (032q)  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди дані, які містяться в комірці пам'яті, адреса якої знаходиться в регістровій парі BC (DE), пересилаються в акумулятор А.. (B (D) - старший байт адреси, C (E) - молодший байт адреси)  8 Виконання команди не впливає на регістр стану.   1 Завантаження регістрової пари HL  2 пряма / регістрова  3 LHLD, B2, B3  4 M(B3, B2) → L, M(B3, B2+1) → H  5 2Ah 051q  6 Команда займає 3 байти пам'яті, виконується за 5 циклів, 16 тактів.  7 Під час виконання команди дані, які містяться в комірці пам'яті, адреса якої знаходиться в другому та третьому байтах команди, пересилаються в регістр L. В регістр H пересилаються дані наступної комірки пам'яті. (B2 - молодший байт адреси, B3 - старший байт адреси)  8 Виконання команди не впливає на регістр стану.   До наведеного списку команд не ввійшли команди роботи зі стеком, які будуть вивчатися в одній із наступних лабораторних робіт. 4. Порядок виконання експериментів. Запустіть емулятор. Експеримент 1. Виконання простих команд завантаження та пересилання даних. Виконайте наведені нижче приклади програм в потактовому режимі. Зафіксуйте, скільки циклів та тактів займає виконання кожної із програм. 1. Завантаження регістра В числом 3Fh за допомогою команди MVI В, 3Fh Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 06 MVI B, d8 дані наступної комірки ОЗП → регістр B  0001 3F CMC дані 3Fh → регістр В  - - - -   2. Завантаження регістрової пари DE двобайтним числом 3А76h за допомогою команди LXI D, 76h, 3Аh Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 11 MVI B, d8 дані наступних двох комірок ОЗП → регістр DE  0001 76 HLT дані 76h → регістр E  0002 3А LDA adr дані 3Ah → регістр D  - - - -   3. Завантаження комірки пам'яті за адресою 000Bh числом A6h за допомогою команди MVI М, А6h Задайте початкові значення регістрів H=00; L=0В. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 36 MVI М, d8 дані наступної комірки ОЗП → комірка ОЗП за адресою 000Bh  0001 A6 АНА М дані A6h → регістр E  - - - -   4. Пересилання даних з одного регістра в інший (наприклад з В в Е) за допомогою команди MОV Е, В Задайте початкові значення регістра В=55 Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 58 MОV Е, В дані регістру В → регістр Е  - - - -   5. Обмін даними між регістрами HL та DE за допомогою команди XCHG. Задайте початкові значення регістрів D=55; E=66; H=07; L=0E. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 EB XCHG регістр H ↔ регістр D регістр L ↔ регістр Е  - - - -   Зробіть висновки. Експеримент 2. Створення масиву даних в пам'яті за допомогою команд пересилання даних. Завдання: Створити в пам'яті масив даних згідно таблиці 2.: Таблиця 2. Адреса Значення Адреса Значення Адреса Значення  1020h ААh 1024h А2h 1028h 9Аh  1021h А8h 1025h А0h 1029h 98h  1022h А6h 1026h 9Еh    1023h А4h 1027h 9Сh     Звісно, можна створити програму, яка буде записувати дані в комірку пам'яті: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3E MVI A, d8 дані наступної комірки ОЗП → регістр А  0001 AA  дані АА  0002 32 STA регістр А → комірка ОЗП за адресою 1020  0003 10 20 молодший байт адреси  0004 2E 10 старший байт адреси  цей фрагмент програми необхідно повторити для всіх значень таблиці  - - - -   Така програма має той недолік, що фрагмент запису числа в регістр А та перезапису його в пам'ять буде повторюватись стільки разів, скільки даних містить масив. Неважко замітити, що послідовність значень являє собою арифметичну прогресію з показником -2. Тому необхідно виконати такі пересилання: АА-2×і → M(HL+i) для всіх і = 0...10. Для написання програми нам потрібні деякі команди, які детальніше будуть розглядатися в наступних лабораторних роботах. Це арифметичні команди: DCR A (DCR B) - зменшення значення регістру A (B) на одиницю; INX H - збільшення значення регістрової пари HL на одиницю; та команди передачі керування: JZ adr - перехід на команду програми за адресою adr в випадку, якщо в результаті арифметичних дій встановлено прапорець стану Z=1 (був нульовий результат попередніх математичних чи логічних операцій); JMP adr - безумовний перехід на команду програми за адресою adr. Команди DCR A, DCR B, INX H - однобайтові, результат їхнього виконання впливає на значення прапорців стану. Команди JZ adr, JMP adr - трибайтові, в другому і третьому байтах записана адреса комірки пам'яті, в якій міститься команда, що буде виконуватись наступною. Якщо Z=1 не виконана, то виконується команда, що записана наступною. Умова Z=1 може бути виконана, якщо в результаті арифметичних дій над вмістом регістрів загального призначення чи комірки пам'яті було отримано нульовий результат. Алгоритм програми можна представити в вигляді:  Спочатку в регістри заносяться початкові дані: в А - значення АА, в В значення і - індексу масиву та в HL - адреса першої комірки масиву. Далі перевіряється значення прапорця Z. Якщо Z=0 тоді програма припиняє роботу, якщо ні - тоді значення регістру А записується в комірку пам'яті М (HL) значення регістру А зменшується на дві одиниці, значення регістрової пари HL збільшується на одиницю, значення індексу в регістрі В зменшується на одиницю. Здійснюється перехід програми на команду перевірки значення прапорця Z і т.д. Занесіть програму в пам'ять та виконайте її. код команди Мнемонічний запис команди Команда мікропроцесора  0000h 06h MVI B, d8 дані наступної комірки ОЗП → регістр B  0001h 0Аh LDAX B дані 0А  0002h 3Еh MVI A, d8 дані наступної комірки ОЗП → регістр А  0003h ААh XRA d дані АА  0004h 21h LXI H, d16 adr → регістрова пара HL  0005h 20h - молодший байт адреси adr  0006h 10h - старший байт адреси adr  0007h САh JZ adr якщо Z=1 , то перейти на адресу adr (adr → РС)  0008h 12h STAX D   0009h 00h NOP команда відсутня  000Ah 77h MOV M, A A → M(HL)  000Bh 3Dh DCR A A -1 → A  000Ch 3Dh DCR A A -1 → A  000Dh 23h INX H HL + 1 → HL  000Eh O5h DCR B B -1 → B  000Fh C3h JMP adr перейти на адресу adr (adr → РС)  0010h 07h RLC молодший байт адреси adr  0011h 00h NOP старший байт адреси adr  0012h 76h HLT Зупинка програми  - - - -   Перевірте значення комірок пам'яті починаючи з адреси 1020h. Запишіть значення комірок. Зробіть висновки. 5. Контрольні запитання. 1. Призначення команд пересилання даних та їх основні типи. 2. Які із видів адресації використовують команди пересилання даних? 3. В яких випадках використовується безпосередня адресація? Її основні переваги та недоліки. 4. В яких випадках використовується регістрова адресація? Її основні переваги та недоліки 5. В яких випадках використовується пряма адресація? Її основні переваги та недоліки 6. Опишіть основні типи машинних циклів. 7. Команда LXI D, B2, B3 займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів. Опишіть, які дії виконуються в кожному із машинних циклів цієї команди. 8. За допомогою яких команд пересилання можна завантажити дані в регістр А? 9. Перечисліть основні команди збереження даних в пам'ять. 10. Чому команди мікропроцесора інколи зручніше записувати в вісімковій системі числення? 11. Чи міняються значення прапорців стану, якщо пересилається число 00h? 12. Команди якого типу використовуються при створенні масивів даних та роботи з ними? 13. Яким чином можна значення комірки пам'яті переписати в іншу комірку пам'яті? Які команди для цього використовуються? 14. Чому, на Вашу думку, відсутні команди пересилання даних, які використовують такі види адресації: пряму/пряму, непряму/непряму, пряму/непряму та непряму/пряму? Відповідь обґрунтуйте.
Антиботан аватар за замовчуванням

03.03.2013 11:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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