DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт до вступної лабораторної роботи по курсу “Системного програмування Мета: Оволодіти навиками створення програм, частини яких написані різними мовами програмування Засвоїти правила взаємодії різних модулів Теоретична частина: Труднощі опису зв'язку програм мовою 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:11

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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