; 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