5. cvičení
Cílem následujících úkolu je procvičit práci s pamětí.
Úkoly
- Napište funkci
void swap(int *a, int *b)
, která prohodí hodnoty, které jsou dány ukazatelia
ab
. - Napište funkci
void division(unsigned int x, unsigned int y, unsigned int *result, unsigned int *remainder)
, která celočíselně vydělí hodnotux
hodnotouy
a výsledek uloží na místo v paměti dané ukazatelemresult
a zbytek po dělení uloží do paměti dané ukazatelemremainder
. - Napište funkci
void countdown(int *values)
, která do daného polevalues
uloží posloupnost 10, 9, 8, ..., 1 (v tomto pořadí). - Napište funkci
void nasobky(short *multiples, short n)
, která do polemultiples
uloží prvních deset násobků číslan
. - Napište funkci
int minimum(int count, int *values)
, která vrací nejmenší prvek polevalues
obsahujícícount
hodnot. Vyzkoušejte, že funkce funguje správně pro kladná i záporná čísla. - Napište funkci
unsigned int my_strlen(char *s)
, která se bude chovat jako funkcestrlen
ze standardní knihovny jazyka C. - Napište funkci
void my_strcat(char *dest, char *src)
, která se bude chovat jako funkcestrcat
ze standardní knihovny jazyka C.
Všechny funkce naprogramujte v assembleru a voláním z jazyka C ověřte, že fungují dle očekávání.