Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

ЗМІШАНЕ ПРОГРАМУВАННЯ НА МОВАХ С ТА АСЕМБЛЕР

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

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

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

Рік:
2011
Тип роботи:
Методичні вказівки до лабораторної роботи
Предмет:
Системне програмування

Частина тексту файла

Міністерство освіти і науки, молоді та спорту України Національний університет “Львівська політехніка”  Кафедра ЕОМ ЗМІШАНЕ ПРОГРАМУВАННЯ НА МОВАХ С ТА АСЕМБЛЕР Методичні вказівки до лабораторної роботи № 2 з курсу “ Системне програмування ” для студентів базового напряму 6.050102  -  “Комп’ютерна інженерія” Затверджено на засіданні кафедри ”Електронні обчислювальні машини” Протокол №  від року Львів – 2011 Змішане програмування на мовах С та Асемблер: Методичні вказівки до лабораторної роботи № 2 з курсу “ Системне програмування ” для студентів базового напряму 6.050102  -  “Комп’ютерна інженерія” / Укладачі: Мархивка В.С., Олексів М.В., Акимишин О.І., Мороз І.В., – Львів: Національний університет “Львівська політехніка”, 2011, 14  с. Укладачі Мархивка В.С., ст. викл. Олексів М. В., асистент Акимишин О.І., к.т.н., доцент Мороз І.В., ст. викл. Рецензенти Відповідальний за випуск: Мельник А. О., професор, завідувач кафедри Змішане програмування на мовах С та Асемблер Мета: оволодіти навиками створення програм, частини яких написані різними мовами програмування Засвоїти правила взаємодії різних модулів. ТЕОРЕТИЧНІ ВІДОМОСТІ Труднощі опису зв'язку програм мовою C і асемблерних програм полягає в тому, що різні версії мови C мають різні угоди про зв'язки і для більш точної інформації варто користатися посібником з наявної версії мови C. Більшість версій мови C забезпечують передачу параметрів через стек у зворотній (у порівнянні з іншими мовами) послідовності. Звичайно доступ, наприклад, до двох параметрів, переданих через стек, здійснюється в такий спосіб: PUSH EBP MOV EBP,ESP MOV EAX,[EBP+8] MOV EDX,[EBP+12] ... POP EBP RET Деякі версії мови C розрізняють великі і малі букви, тому ім'я асемблерного модуля повинне бути представлено в тому ж символьному регістрі, який використовують для посилання C-програми. У деяких версіях мови C потрібно, щоб асемблерні програми, що змінюють регістри EDI і ESI, записували їхній вміст у стек при вході і відновлювали ці значення зі стека при виході. Ассемблерні програми повинні повертати значення, якщо це необхідно, у регістрі EAX (подвійне слово) чи в регістровій парі EDX:EAX (8 слів). Для деяких версій мови C, якщо ассемблерна програма встановлює прапор DF, те вона повинна скинути його командою CLD перед поверненням. Щоб скомпонувати разом модулі C++ і Макро асемблера, повинні бути дотримані наступні три умови: У модулях Макро Асемблера повинні використовуватися угоди про імена, прийняті в C++. C++ і Макро Асемблер повинні спільно використовувати відповідні функції й імена змінних у формі, прийнятної для C++. Для комбінування модулів у виконувану програму потрібно використовувати утіліту-компоновщик (TLINK, LINK тощо). Підкреслення і мова С Якщо ви пишете мовою С чи С++, то всі зовнішні мітки повинні починатися із символу підкреслення (_). Компілятор С і С++ вставляє символи підкреслення перед всіма іменами зовнішніх функцій і змінних при їхньому використанні в програмі на С/С++ автоматично, тому вам потрібно вставити їх самим тільки в кодах асемблера. Ви повинні переконатися, що всі асемблерні звертання до функцій і змінних С починаються із символу підкреслення, і крім того, ви повинні вставити його перед іменами всіх асемблерних функцій і змінних, котрі робляться загальними і викликаються з програми мовою С/С++. Наприклад, наступна програма мовою С (link2asm.cpp): extrn int ToggleFlag(); int Flag; main() { ToggleFlag(); } правильно компонується з наступною програмою на Асемблері (CASMLINK.ASM): .586 .MODEL FLAT .DATA EXTRN _Flag:dword .CODE PUBLIC _ToggleFlag _ToggleFlag PROC cmp [_Flag],0 ; прапор скинутий? jz SetFlag ; так, установити його mov [_Flag],0 ; ні, скинути його jmp EndToggleFlag ; виконано SetFlag: mov [_Flag],1 ; установити прапор EndToggleFlag: ret _ToggleFlag END...
Антиботан аватар за замовчуванням

20.05.2013 22:05

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини