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

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

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

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

Звіт про виконання лабораторної роботи № 10 з курсу „Системне програмування”: Міжмодульна взаємодія

Оригінальна назва роботи

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

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

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

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

Рік:
2004
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування
Група:
КІ-З
Коротко про документ

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

У звіті з лабораторної роботи розглянуто принципи міжмодульної взаємодії та спільного використання коду і даних у середовищі MS-DOS. Наведено програмний код мовою асемблера для головного модуля та двох сервісних підпрограм.

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

  • Міжмодульна взаємодія
  • Програмування мовою асемблера
  • Підпрограми в MS-DOS
  • Передача параметрів через стек
  • Обробка переривань
  • Компонування програм

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

  1. Мета роботи
  2. Короткі теоретичні відомості
  3. Завдання на лабораторну роботу
  4. Вміст .asm-файлів
  5. Висновок
Для кого:Студенти технічних спеціальностей, які вивчають системне програмування та архітектуру комп'ютерів.
Викладачі:Викладач кафедри електронних обчислювальних машин

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

міжмодульна взаємодіястекмодульMS-DOSпідпрограмакомпонувальникоб'єктний модульсегмент коду

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 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 cmp al,09h jg az01 add al,30h mov KeyCode,al jmp next01 az01: add al,37h mov KeyCode,al next01: ;************ #? digit *********************** mov al,bl and al,00fh cmp al,9h jg az02 add al,30h mov KeyCode+1,al jmp next02 az02: add al,37h mov KeyCode+1,al next02: mov dx,OFFSET CodeMsg cmp bh,1 jz extprn jmp asciiprn extprn: mov dx,OFFSET ExtMsg asciiprn: mov ah,09 int 21h mov dx,OFFSET KeyCode mov ah,09 int 21h POP BP ret PUTCH ENDP CODESG ENDS END Висновок: Виконуючи дану лабораторну роботу, я ознайомився з принципами спільного використання коду та даних між програмами під управлінням MS-DOS.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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