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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт до вступної лабораторної роботи по курсу “Системного програмування Мета: Оволодіти навиками створення програм, частини яких написані різними мовами програмування Засвоїти правила взаємодії різних модулів Теоретична частина: Труднощі опису зв'язку програм мовою C і асемблерних програм полягає в тому, що різні версії мови C мають різні угоди про зв'язки і для більш точної інформації варто користатися посібником з наявної версії мови C. Більшість версій мови C забезпечують передачу параметрів через стек у зворотній (у порівнянні з іншими мовами) послідовності. Звичайно доступ, наприклад, до двох параметрів, переданих через стек, здійснюється в такий спосіб. Деякі версії мови C розрізняють великі і малі букви, тому ім'я асемблерного модуля повинне бути представлено в тому ж символьному регістрі, який використовують для посилання C-програми. У деяких версіях мови C потрібно, щоб асемблерні програми, що змінюють регістри DI і SI, записували їхній вміст у стек при вході і відновлювали ці значення зі стека при виході. Ассемблерні програми повинні повертати значення, якщо це необхідно, у регістрі AX (одне слово) чи в регістро парі DX:AX (два слова). Для деяких версій мови C, якщо ассемблерна програма встановлює прапор DF, те вона повинна скинути його командою CLD перед поверненням. Хід роботи: DOSSEG .MODEL SMALL .STACK 100h .DATA ;_A1 dw 1111h ;_A2 dw 1111h ;_B db 11h ;_C db 1 ;_D dw 1 ;_E db 1 _K dw 2513h ;_Temp1 dw 00h ;_Temp2 dw 00h ;_X dw .CODE _papa PROC PUBLIC _papa EXTRN _A:word,_B:byte,_C:byte,_D:byte,_E:word,_X:word,_Temp1:word,_Temp2:word mov ax,@data mov ds,ax mov al,_D mov ah,0 cmp _D,0 jge sd mov ah,0FFh sd: mov bx,_E add ax,bx mov bx,_K sub ax,bx mov dx,00 mov bl,_C mov bh,0 cmp _C,0 jge sk mov bh,0FFh sk: imul bx mov _Temp2,ax mov ax,_A idiv _B mov bx, 0 mov bl,al mov _B,al cmp _B,0 jge sll mov bh,0FFh sll: add bx,_Temp2 mov _X,bx ret _papa ENDP _my_calk PROC PUBLIC _my_calk EXTRN _ero:PROC call near ptr _ero ret _my_calk ENDP End #include <stdlib.h> #include <stdio.h> #include <conio.h> extern short papa(void); extern void my_calk(void); void ero(void); unsigned char C[2],B[2],D[2]; short X,Temp1,Temp2,A,E; int main() { X=0; printf ("\nX=A/B+C*(D+E-K)\n"); printf("B="); scanf("%d",&B); printf("D="); scanf("%d",&D); printf("C="); scanf("%d",&C); printf("A="); scanf("%d",&A); printf("E="); scanf("%d",&E); //X=A/B+C[0]*(D-E[0]+K); papa(); my_calk(); getch(); return 0; } void ero() { printf ("A/B+C*(D+E-K)=%d\n",X); } Висновок: На даній лабораторній роботі я навчилася оволодівати навиками створення програм, частини яких написані різними мовами програмування і засвоїла правила взаємодії різних модулів.
Антиботан аватар за замовчуванням

31.03.2013 15:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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