grupa AiR1
Architektura Systemów Komputerowych - Projekt 2
Nasz zadaniem było stworzenie projekt, który łączyłby procedury w języku C jak i asemblerze. Tak powstał prosty program NWD, który oblicza największy wspólny dzielnik podanych przez użytkownika dwóch liczb.
Trzymając się wspomnianego założenia napisaliśmy w języku C prosty interfejs pozwalający na sczytanie podanych przez użytkownika liczb, a następnie przekazanie jej do ASM, gdzie wykonywane są wszelkie potrzebne obliczenia, po czym ponownie w C wykonywana jest ekspozycja wyniku.
Korzystając z podstawowej biblioteki języka C - studio.h program przy użyciu funkcji printf wyświetla na ekranie prośbę o podanie liczb, których nwd chcemy obliczyć, następnie podane liczby zostają sczytane przy użyciu operacji scanf. Zadeklarowanie procedury części assemblerowej dokonuje się w linijce:
extern int suma(int liczba).
Sama procedura jest wywołana bezpośrednio w trakcie wyświetlania na ekranie ostetecznego wyniku printf("NWD(%d,%d)=%d",x,y,NWD(x,y));
Kompilacja i linkowanie programu zostało wywołane następującymi instrukcjami:
tasm -ml nwd_a.asm
d:\borlandc\bin\bcc d:\borlandc\bin\nwd_c.c
tlink d:\borlandc\lib\C0s.obj + nwd_a.obj + nwd_c.obj, nwd.exe ,,d:\borlandc\lib\cs.lib;