NASM tutoriál

Sekcia: Programovanie 02.03.2017 | 22:07
Avatar Velitar Ubuntu  Používateľ

Ahoj, chcem sa len opýtať či nepoznáte nejaký dobrý tutoriál alebo návod pre začiatočníkov pre nasm assembler.

    • RE: NASM tutoriál 03.03.2017 | 03:39
      Avatar Dušan Kreheľ Debian  Používateľ

      1) Pre aký procesor programuješ (32bit alebo 64bit a platforma)

      2) Pre daný procesor si zisti:

      • aké ma registre
      • inštukčnú sadu (prehľad všetkých alebo základných príkazov v tabuľke)


      P.S.: TUKE?

      človek z Prešovského kraja
      • RE: NASM tutoriál 03.03.2017 | 03:51
        Avatar Dušan Kreheľ Debian  Používateľ

        3 a) vedieť volať priamo funkcie jadra systému z asambléru

        alebo

        3 b) vedieť prilikovať knižnicu C a volať jej funkcie

        človek z Prešovského kraja
        • RE: NASM tutoriál 03.03.2017 | 05:03
          Avatar Dušan Kreheľ Debian  Používateľ

          Hello world v NASM so C štandárnou knižnicou

          hello_world.asm

          section     .text
          	global main
          	extern puts
          	
          main:
          	; vypise text
          	push dword msg ; ulozi na zasobnik
          	call puts
          	pop eax ; vycisti zasobnik
              
          	; navratna hodnota funkcie main
          	mov eax, 0
          	ret
          	
          section     .data
          
          msg     db  'Hello, world!'
          

          Makefile

          ELF_FORMAT=elf32
          
          hello_world: hello_world.asm
          	nasm -f $(ELF_FORMAT) hello_world.asm
          	gcc hello_world.o -o hello_world
          
          clean:
          	rm -f hello_world hello_world.o
          

          P.S.: Dá sa spraviť aj ináč.

          človek z Prešovského kraja
          • TOTO je správne !!! 03.03.2017 | 05:15
            Avatar Dušan Kreheľ Debian  Používateľ

            Hello world v NASM so C štandárnou knižnicou

            hello_world.asm

            section     .text
            
            	global main
            	extern puts
            	
            main:
            	; vypise text
            	push dword msg ; ulozi na zasobnik
            	call puts
            	add esp, 32 ; vycisti zasobnik - sizef dword is 32 Bajtov
                
            	; navratna hodnota funkcie main
            	mov eax, 0
            	ret
            	
            section     .data
            
            msg     db  'Hello, world!'

            Makefile

            ELF_FORMAT=elf32
            
            hello_world: hello_world.asm
            	nasm -f $(ELF_FORMAT) hello_world.asm
            	gcc hello_world.o -o hello_world
            
            clean:
            	rm -f hello_world hello_world.o

            P.S.: Dá sa spraviť aj ináč.

            človek z Prešovského kraja