8B 00 7C 19 45 ............ assembly (x86, nasm) mov eax, ebx mov eax, 1597 nem megy: mov 197, ecx 32 bites regiszter eax -------- -------- ----0--- -------- ax ----0--- -------- al -------- ah ----0--- ebx ecx edx esi edi add eax, ebx ; eax := eax + ebx add esi, 17 ; esi := esi + 17 add eax, 1 inc eax sub edx, edi sub edx, 7 dec ebx mul ebx ; edx:eax := eax * ebx ; ha kicsik: eax := eax * ebx, edx := 0 ; nincsen: mul esi, edi div esi ; eax := edx:eax / esi ; edx := edx:eax % esi ; eax := eax ^ 13 = eax ^ 8 * eax ^ 4 * eax ^ 1 = eax ^ (8+4+1)= = eax ^ (1101b) mov ebx, eax ; ebx := a mul eax ; eax := a^2, edx := 0 mul eax ; eax := a^4, edx := 0 mov ecx, eax ; ecx := a^4 mul eax ; eax := a^8, edx := 0 mul ecx ; eax := a^12, edx := 0 mul ebx ; eax := a^13, edx := 0 mul eax mul eax mul eax mul eax mul eax mul eax mul eax mul eax ; futasi ideju verem push edx ; verem := [edx regi erteke] pop esi ; esi := edx regi erteke, verem := [] ; eax := a * b * (c - s) + d * s * (d2-a) ; --1-- --2--- --3--- --4--- ; -----5----- -----6----- ; ----------7-------- push eax ; verem [a] push edx ; verem [d,a] mul ebx ; eax := a * b, edx := 0 (1) sub ecx, esi ; ecx := c - s (2) mul ecx ; eax := a * b * (c - s) (5) mov ecx, eax ; ecx := a * b * (c - s) pop eax ; eax := d, verem [a] mul esi ; eax := d * s, edx := 0 (3) pop ebx ; ebx := a, verem [] sub edi, ebx ; edi := d2-a (4) mul edi ; eax := d * s * (d2-a) (6) add eax, ecx ; eax kesz (7) section .data ; adatszegmens abc dd 21, 63124, 643 xyz db 17, 53 text db 97, 98, 99, 0 text2 db "abc", 0 ; db : define byte ; dd : define doubleword (32 bit) section .text mov eax, [abc] ; eax := 21 mov ebx, abc ; eax := 125912467126 mov eax, [ebx] ; eax := 21 int *ip; int i = *ip; section .data a dd 1 b dd 1 c dd 1 d dd 1 s dd 1 d2 dd 1 ; -------------------8------------------- ; ----------7-------- ; -----5----- -----6----- ; --1-- --2--- --3--- --4--- ; a := a * b * (c - s) + d * s * (d2-a) ; 1 mov eax, [a] ; eax := a mov edx, [b] ; edx := b mul edx ; eax := a*b, edx := 0 push eax ; [a*b] ; 2 mov eax, [c] ; eax := c sub eax, [s] ; eax := c - s push eax ; [c-s,a*b] ; 5 pop eax ; eax := c-s, [a*b] pop edx ; edx := a*b, [] mul edx ; eax := a*b*(c-s), edx := 0 push eax ; [a*b*(c-s)] ; 3 mov eax, [d] mov edx, [s] mul edx ; eax := d*s, edx := 0 push eax ; [d*s,a*b*(c-s)] ; 4 mov eax, [d2] sub eax, [a] push eax ; [d2-a,d*s,a*b*(c-s)] ; 6 pop eax pop edx mul edx ; [a*b*(c-s)], eax := (d2-a)*d*s, edx := 0 push eax ; [(d2-a)*d*s, a*b*(c-s)] ; 7 pop eax pop edx add eax, edx ; [], eax kesz push eax ; [a vegeredmeny] ; 8 pop eax ; eax a vegeredmeny mov [a], eax ; a := a vegeredmeny jmp hova hova: cmp eax, [a] j??? hova a bove > elojel nelkul b elow < elojel nelkul g reater > elojelesen l ess < elojelesen e qual = (n ot) ja, jb, jg, jl jae, jbe, jge, jle je jna, jnb, jng, jnl jnae, jnbe, jnge, jnle jne nincsen: jn