Zadanie 2

Napisać w asemblerze NASM funkcję, którą można wywołać z języka C. Funkcja ma następujący prototyp:

int pesel(char *new_pesel, const char *pesel_list, int n, char *year, char sex);

Parametr pesel_list jest wskaźnikiem na tablicę rozmiaru 12n bajtów, zawierającą n numerów PESEL. Każdy PESEL zapisany jest jako 12-bajtowy napis ASCIIZ (zakończony zerem). Napisy te umieszczone są po kolei jeden za drugim, ale nie są posortowane. Parametr year jest wskaźnikiem na czterocyfrowy napis określający rok. Parametr sex określa płeć i jest to kod ASCII litery K lub M. Parametr new_pesel jest wskaźnikiem na tablicę rozmiaru 12 bajtów.

Funkcja znajduje dowolny poprawny PESEL dla podanego roku year i płci sex, nie występujący na liście pesel_list. Wynik jest kopiowany jako napis ASCIIZ do tablicy new_pesel. Funkcja zwraca 1, gdy odpowiedni PESEL został znaleziony. Zwraca 0, gdy takiego PESEL-u nie ma. Zwraca -1, gdy wystąpił błąd innego rodzaju, np. brak pamięci. Funkcja, zgodnie z prototypem, nie może modyfikować tablicy pesel_list. Algorytm wyznaczania numeru PESEL można znaleźć np. w Wikipedii.

Jako rozwiązanie zadania należy dostarczyć jeden plik asemblerowy o nazwie ImięNazwisko2.asm zawierający implementację funkcji pesel. Zadanie będzie oceniane w skali od 0 do 5 punktów. Przy ocenie będą brane pod uwagę następujące kryteria:

Informacje dodane po ogłoszeniu zadania