; Assembly lab
; Michal Schorm - xschor02

push EDX          ;ulozim si EDX, uvolnim az na konci, nebuduho pouzivat
xor edx, edx
push EAX
mov EAX, ECX      ;budu pocitat 8*ECX prvni
imul 8            ;v EAX je 8*ECX
push ECX          ;ulozim si puvodni hodnotu ECX
mov ECX, EAX      ;ulozim si do ECX 8*ECX
sbb ECX, 9005     ;odectu (8*ECX)-9005, vysledek do ECX, uz na nej nebudu hrabat, do konce s nim nemusim pracovat, pak ho jen prictu k vysledku prvnich dvou zavorek
pop EAX           ;vratim si puvodni hodnotu do EAX
push EAX          ;zase si musim ulozit EAX protoze chci udelat EAX/EBX a vysledek mit v EBX docasne
idiv EBX          ;EAX/EBX
push EBX          ;pouziju treba EBX jako uloziste, proto si ho prvni pushnu
mov EBX, EAX      ;vysledek EAX/EBX
pop EAX           ;zase si vratim puvodni hodnotu EAX
sbb EAX, 4
sbb EAX, EBX      ;ted tady mam ulozene v EAX tohle : EAX-4-(EAX/EBX)
pop EBX           ;muzu si uvolnit EBX na puvodni hodnotu
push EBX          ;opet si jej musim ulozit, uz zbyva jen EBX-353
sbb EBX, 353      ;udelam to odcitani
mul EBX           ;vysledek co je v EAX vynasobim tzn: (-353+EBX)*(EAX-4-(EAX/EBX))
adc EAX, ECX      ;sectu (-353+EBX)*(EAX-4-(EAX/EBX))+((8*ECX)-9005)
pop EBX           ;vratim puvodni hodnotu do EBX    !!!
pop ECX           ;vratim puvodni hodnotu do ECX    !!!
pop EDX           ;i tady vratit hodnotu !!!!!


; !!! dulezite poradi navraceni puvodnich hodnotu registru EBX, ECX a EDX