Σελίδα 1 από 1

Πως γράφουμε σε Assembly σε Ubuntu (NASM)

ΔημοσίευσηΔημοσιεύτηκε: 22 Ιαν 2012, 23:17
από simosx
Δείτε και Πως γράφουμε Assembly σε Ubuntu μέσω GCC και as

Στο viewtopic.php?p=13606#p13606 υπάρχει μια δημοσίευση για το πως γράφουμε σε Assembly σε Ubuntu.
Εδώ γράφω το ίδιο, σε μορφή οδηγού.

Το πρώτο βήμα είναι να εγκαταστήσουμε τον Assembler, που για Linux προτείνεται ο Nasm,
Κώδικας: Επιλογή όλων
sudo apt-get install nasm

Εδώ είναι ένα μικρό πρόγραμμα σε Assembly όπου τυπώνει ένα μήνυμα. Γράψτε το σε αρχείο με όνομα helloworld.asm.
Κώδικας: Επιλογή όλων
global _start

section .data
   hello   db   "Γεια σου Ubuntu-gr!", 10
   length   equ   $-hello

section .text

_start:
   mov eax, 4      ; write to file
   mov ebx, 1      ; STDOUT handle
   mov ecx, hello   ; our message
   mov edx, length   ; size of message
   int 80h         ; execute the syscall

   xor ebx, ebx      ; send 0 as 'exit code'
   mov eax, 1      ; terminate process
   int 80h         ; execute the syscall


Αν έχουμε Ubuntu 64-bit, τότε το μεταγλωττίζουμε με
Κώδικας: Επιλογή όλων
nasm -f elf64 helloworld.asm

ενώ αν έχουμε Ubuntu 32-bit, τότε μεταγλωττίζουμε με
Κώδικας: Επιλογή όλων
nasm -f elf helloworld.asm


Τέλος, κάνουμε τη σύνδεση (linking) με την εντολή
Κώδικας: Επιλογή όλων
ld -o helloworld helloworld.o


και το τρέχουμε με
Κώδικας: Επιλογή όλων
$ ./helloworld
Γεια σου Ubuntu-gr!