11 gru 2009

Ja vs. asembler pod Linuksem - 1:0

Dostałem do wykonania projekt z architektury komputerów, polegający na napisaniu pewnego programu w asemblerze i w związku z tym, że windows nie jest moim ulubionym systemem i staram się w tym semestrze go unikać, postanowiłem pisać pod Linuksem  i na ten system właśnie (NASM).


Oto treść zadania:


Napisz program, który pobiera ciąg znaków z wejścia i wypisuje na wyjściu znaki z tego ciągu – jeden znak w linii. Program powinien zakończyć pracę po naciśnięciu przez użytkownika klawisza BACKSPACE + modyfikacje.


Modyfikacje:
  • Każdy znak w nowej linii będzie poprzedzony ilością spacji równą numerowi wiersza.
  • Inny klawisz, oprócz backspace
  • Poniżej statystyka – wypisywanie i zliczanie liter dużych, małych, cyfr i znaków specjalnych


Z materiałami do nauki nie było łatwo, bo większość kursów jest o programowaniu w dosie, a kursy linuksowe najczęściej opisują niewiele więcej niż 'Hello world'. Zadanie samo w sobie było raczej dla piszących pod dosa, bo musiałem na przykład zaprogramować bezbuforowe wejście klawiatury, które pod dosem jest banalnie łatwe do zrobienia (gotowa funkcja), a pod Linuksem sprawia trochę problemów (sam go nie napisałem, wkleiłem po prostu ~80 linijek tekstu znalezionego w sieci i przy oddawaniu projektu mówiłem, że jest to odpowiednik trzech linijek, które pisali inni z mojej grupy).


Aby ułatwić zadanie ludziom, którzy mają, lub będą mieli kiedyś podobny program do napisania na jakieś zajęcia, umieszczam źródła programu wraz z makefile'em do pobrania, oraz źródło do przeglądania online. Mam nadzieję, że komuś, kiedyś się przyda ;)

Brak komentarzy:

Prześlij komentarz

Broken Piano

Nie wiem, czy ktoś tu jeszcze zagląda (ja nie za bardzo), ale wrzucam nowy kawałek, niechaj się roznosi :)