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

Міжмодульна взаємодія

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 10 з курсу „ Системне програмування ” Тема: Міжмодульна взаємодія. Львів – 2004 Мета роботи: Ознайомитись з принципами спільного використання коду та даних між програмами під управлінням MS-DOS. Короткі теоретичні відомості Створюючи програмне забезпечення на мові Асемблера проектувальник потенційно може зіткнутись з такими ситуаціями: необхідність компонування декількох програм написаних на різних мовах програмування (наприклад, для об‘єднання потужності мов високого рівня та ефективності асемблера); програма, написана у вигляді одного модуля, може виявитись завеликою для асемблювання; окремі модулі можуть бути написані різними проектувальниками з метою подальшої інтеграції; з причини великого розміру виконавчого модуля може виникнути необхідність перекриття окремих частин програми в процесі виконання. Кожна програма асемблюється окремо і генерує власний унікальний об‘єктний (OBJ) модуль. Програма  компонувальник (LІNK) к правило виконання починається з основної програми, яка викликає одну або декілька підпрограм. Підпрограми, в свою чергу, можуть задіювати інші підпрограми. Виклик іншої програми зумовлює необхідність міжсегментного (довгого) виклику (CALL). Дана операція спочатку записує до стеку вміст регістру CS і заносить до цього регістру адресу іншого сегменту, потім записує до стеку значення регістру ІP і заносить до цього регістру нову відносну адресу. Таким чином, в стеку запам‘ятовуються і адреса кодового сегменту, і зміщення для наступного повернення з підпрограми. Завдання на лабораторну роботу Створити програму, що складається з трьох частин (головна програма та дві сервісні підпрограми), причому головна програма повинна виконувати функції координації та контролю роботи сервісних підпрограм. В якості алгоритму роботи сервісних програм необхідно використати алгоритм програми створеної в процесі виконання лабораторної роботи № 6. Означений алгоритм необхідно розділити на дві взаємозв‘язані частини (окремі для кожної з сервісних програм) так, щоб результат виконання першої частини передавався в другу частину для подальшої обробки шляхом використання спільних для обох програм даних. Взаємодію між основною та сервісними програмами необхідно організувати шляхом передачі параметрів через стек. Вміст .asm-файлів Основний модуль: EXTRN GETCH:FAR EXTRN PUTCH:FAR STACKSG SEGMENT PARA STACK 'Stack' DW 64 DUP(?) STACKSG ENDS DATASG SEGMENT PARA 'Data' ControlCMsg db 10,13,' * Press any key to view its ASCII/EXT code *' db 10,13,' * press CTRL+C to exit *$' KeyMsg db 10,13,'Keypressed echo: $' DATASG ENDS ;--------------------------------------------- CODESG SEGMENT PARA PUBLIC 'Code' BEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACKSG PUSH DS SUB AX,AX PUSH AX MOV AX,DATASG MOV DS,AX mov dx,OFFSET ControlCMsg; mov ah,09 int 21h cycle: mov dx,OFFSET KeyMsg mov ah,09 int 21h CALL GETCH CALL PUTCH jmp cycle BEGIN ENDP CODESG ENDS END BEGIN Перший модуль: CODESG SEGMENT PARA PUBLIC 'Code' GETCH PROC FAR ASSUME CS:CODESG PUBLIC GETCH PUSH BP MOV BP,SP mov ah,01h int 21h ; char in cmp al,0 jz ext mov bh,0 ;ascii jmp print ext: mov bh,1 ;ext mov ah,01h int 21h ; repeat for extended scan-code print: push AX push BX ;SAVE DATA TO STACK POP BP RET GETCH ENDP CODESG ENDS END Другий модуль: CODESG SEGMENT PARA PUBLIC 'Code' PUTCH PROC FAR ASSUME CS:CODESG,DS:CODESG PUBLIC PUTCH jmp strt CodeMsg db 10,13,'ASCII-code: $' ExtMsg db 10,13,'Extended-code: $' KeyCode db 0,0,'$' strt: PUSH BP MOV BP,SP pop BX pop AX ; GET DATA FROM STACK mov bl,al ; put symbol to out register mov ax,seg CodeMsg mov ds,ax ;************ ?# digit *********************** and al,0f0h shr al,4 cm...
Антиботан аватар за замовчуванням

31.03.2013 15:03

Коментарі

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

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

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

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

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

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

Admin

26.02.2019 12:38

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

Новини