Zadanka do #wyklady z ASMa. Nie trzeba robic wszystkich zadanek. Ba, nie trzeba zadnego. Jesli ktos zrobi (ktorekolwiek zadanie(zadania)) moze je wyslac na gynvael@vexillium.org (z tematem #wyklady asm), to wtedy sprawdze, skomentuje i odesle. Zeby bylo ciekawiej. Za kazde zadanko jest na poczatku 100 pkt (lub 200 jesli uznam ze jest to zadnako o powyzszonej trudnosci). Jak dostane odpowiedz od kogos, to zaliczam mu ta ilosc punktow (jaka jest przy zadanku) (punktacja jest ponizej) i odejmuje 5 pkt z ilosc punktow za zadanko (czyli jak dostane 2 rozwiazania, to 3cia osoba ktora przysle dostaje 90pkt a nie 100pkt). Ilosc punktow za zadanko jest napisana przy kazdym zadanku. Gdy pula punktow przy danym zadaniu wyniesie 50pkt, wtedy opublikowuje rozwiazanie, a pule zmieniam na 0pkt. To samo robie w momencie gdy zadanie ma 70pkt dluzej niz tydzien, i nie naplywaja kolejne odpowiedzi. Pare hintow/zasad =^^=: 1. sprawdzajcie (kompilujcie) programy zanim mi wyslecie ;> 2. obowiazujacy assembler i OS jest podany przy kazdym zadaniu 3. przede wszystkim progs powinien dzaialac poprawnie ;> 4. ale o stylu tez pamietajcie =^^= 5. przez program testujacy rozumiem po prostu program ktory uzywa danej funkcji/podprogramu, i np wyswietla wynik na ekran, zeby mozna bylo osadzic czy jest poprawne, czy nie Gritz, gynv -- PUNKTACJA -- 1. [ 700 pkt] cli (1-3, 5-7) 2. [ 285 pkt] Mat None (1-3) 3. [ 180 pkt] keidii (2-3) -- KONIEC PUNKTACJI -- 1. [ 90 pkt] (nasm+linux) Napisz program ktory wypisuje na ekranie Hello World. 2. [ 85 pkt] (nasm+linux) Napisz program ktory wypisuje na ekranie Hello World, ale korzysta tylko z sekcji kodu ".text" (sekcja ".data" powinno byc pusta, nie zawierac nic) 3. [ 85 pkt] (nasm+linux) Napisz program ktory wypisuje na ekranie Hello World, ale nie korzystaj ani razu z mnemonika mov. Hint: uzyj innych mnemonicow, postaraj sie uzyskac dana wartosc w rejestrze dodajac, odejmujac, xorujac, andujac, badz korzystajac ze stosu. 4. [100 pkt] (nasm+linux) Napisz dowolny program, skladajacy sie przynajmniej z 20 mnemonicow (min 6sciu roznych), i opisz krok po kroku dzialanie programu. Powinna tam byc minimum jedna petla (obojetnie czy to loop, czy jakis cmp/jz). Program nie musi miec sensu, byle by sie nie wywalal (tzn segfault na koncu zakazany). 5. [ 95 pkt] (nasm 32 bity) Zapisz ponizszy program w jak najmniejszej licznie mnemonikow: mov eax, 0x12345678 push eax pop ebx mov ax, 0 ror eax, 16 xor ax, ax 6. [ 95 pkt] (nasm+linux) Napisz program ktory odczytuje z stdin (pamietacie stdout ? ustawialismy file handle jako 1 jak chcielismy stdout.. w przypadku stdin - standardowego wejscia, file handle to 0) jakis napis, po czym wypisuje go na ekran (skorzystac trzeba dodatkowo z syscall'a read, info -> http://www.lxhp.in-berlin.de/lhpsysc1.html). 7. [2*95 pkt] (nasm+linux) Napisz program ktory odczytuje z stdin jakis napis, po czym zamienia duze litery na male, i male na duze i wypisze go na ekran. Narazie tyle. Wiecej dojdzie.