; ZH: szerda, 10:15-11:45 10010010 ABCD123F ABCD1240 1B 98 35 DE egy 01 02 00 00 00 78 56 34 12 section .data egy db 1, 2, 3 ; define byte ketto dd 2, 0xffff7777 ; define doubleword (4 byte) sok dd 0x12345678 ; little endian dd 123, 34, 6, 0xcccdddee a dd 1 b dd 2 ; Pascal jellegu tomb tomb_meret dd 6 tomb dd 1, 2, 3, 4, 5, 99 ; C stilusu tomb szoveg db 'a', 'b', 'c', 0 al [szoveg+eax] section .bss valt resb 10 ; reserve resd 1000 ; 4000 byte section .text ; regiszterek ; eax, ebx, ecx, edx, esi, edi, ebp, esp ; 32b -------------eax---------------- 32 b 01001000010001010001010010011110 ------ax-------- 16 b ----ah-- 8 b ----al-- 8 b mov eax, ebx ; eax := ebx mov eax, al ; nem jo mov eax, [egy] ; eax := 0x00000201 ; !!! mov eax, dword [egy] mov al, byte [egy] mov al, 1 ; al := 0x01 mov eax, 1 ; eax := 0x00000001 mov eax, egy ; eax := 0x???????? mov eax, [eax] ; 2 lepesben ua. mint mov eax, [egy] mov eax, [eax*4+ebx+egy] mov eax, [eax*4+[ebx]] ; nem jo add eax, ebx ; eax := eax + ebx add eax, 1 ; eax := eax + 1 add eax, [egy] ; eax := eax + egy sub eax, ebx ; eax := eax - ebx sub eax, 1 ; eax := eax - 1 inc eax ; add eax, 1 dec eax ; sub eax, 1 inc [egy] ;nem jo inc dword [egy] inc byte [egy] mul ecx ; edx:eax := eax * ecx mul bl ; ax := al * bl mov edx, 10 mov eax, 20 mul edx ; edx := 0 ; eax := 200 ; edx:eax := 000000000000000 00000000011001000 ; ------edx------ ------eax-------- div ecx ; eax := edx:eax / ecx ; edx := maradek nagyobb: mov eax, ebx cmp eax, ebx ; eax > ebx jg nagyobb jXXXX !elojel elojel a : above g : greater b : below l : less n : not e : (or) equal ; if (a == b) ++a; mov eax, [a] mov ebx, [b] cmp eax, ebx jne nemegyenlo add dword [a], 1 nemegyenlo: ; if (a + 1 == b - 3) a = b - a; ; if ((a + 1) == (b - 3)) a = b - a; mov eax, [a] inc eax ; a + 1 mov edx, [b] sub edx, 3 ; b - 3 cmp eax, edx jne nemegyenlo mov eax, [b] sub eax, [a] mov [a], eax nemegyenlo: // while (a < b) ++a; ciklus.eleje: // felt. mov eax, [a] mov ebx, [b] cmp eax, ebx jnl ciklus.vege // mag inc dword [a] jmp ciklus.eleje ciklus.vege: while (a >= b) { if (a + b > 10) --a; if (b < 5) ++b; --a; } ciklus.eleje: mov eax, [a] cmp eax, [b] jnge ciklus.vege ; ciklusmag ; if (a + b > 10) --a; mov eax, [a] add eax, [b] cmp eax, 10 jng elag.vege1 dec dword [a] elag.vege1: ; if (b < 5) ++b; cmp dword [b], 5 jnl elag.vege2 inc dword [b] elag.vege2: ; --a; dec dword [a] jmp ciklus.eleje ciklus.vege: section .data szoveg db 'Z', 0, 'a', 'b', 'c', 8, 35, 0, 7, 2, 0, 1 ; B! fontos! section .text mov eax, 0 ; hanyadik poziciot vizsgaljuk ciklus.eleje: mov bl, [szoveg+eax] ; mov ebx, [szoveg+eax] nem jo, ebx 4 bajtos cmp bl, 0 je ciklus.vege inc eax jmp ciklus.eleje ciklus.vege: section .data tomb_hossz dd 3 tomb dd 34, 743, -2415 section .text mov eax, 0 ; aktualis elem indexe ciklus.eleje: cmp eax, [tomb_hossz] je ciklus.vege cmp dword [tomb+4*eax], 20 jng nem_nagyobb_mint_20 inc dword [tomb+4*eax] nem_nagyobb_mint_20: jmp ciklus.eleje ciklus.vege: