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

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

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

Δημοσίευσηαπό simosx » 22 Ιαν 2012, 23:17

Δείτε και Πως γράφουμε 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!
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Οδηγοί - How to - Tutorials

cron