Selamlar, ben Supp. Bugün sizlere Assembly ile ekrana nasıl yazı yazdırırız, bunu anlatacağım.
Kod:
ilk_assembly.asm
Kod:
section .data
love_msg db 'Suppressor Coder abiyi seviyor!', 0 ; Tanımlanan mesaj
section .text
global _start
_start:
; stdouta yazılmak üzere Suppressor Coder abiyi seviyor! mesajını yazdır
mov eax, 4 ; yazı yazdımra sistem çağrısı
mov ebx, 1 ; stdout dosya tanımlayıcısı
mov ecx, love_msg ; yazılacak mesajın adresi
mov edx, 30 ; mesajın uzunluğu
int 0x80 ; sistem çağrısını yap
; Çıkış yapma kısmı
mov eax, 1 ; çıkış sistem çağrısı
xor ebx, ebx ; çıkış kodu 0
int 0x80 ; çıkış sistem çağrısını yap
Açıklayalım:
- section .data: Veri bölümü. Burada, yazdırılacak mesaj olan "Suppressor Coder abiyi seviyor!" string'i tanımlanır.
- section .text: Kod bölümü. Ana programın gerçekleştiği bölümdür.
global _start: Programın başlangıç noktasını _start olarak belirtir.
_start:: Programın başlangıç noktası.
mov eax, 4: eax kaydediciine 4 değerini atar. Bu, "yazı(write)ı" sistem çağrısının numarasıdır.
mov ebx, 1: ebx kaydediciine 1 değerini atar. Bu, stdout (standard çıkış) dosya tanımlayıcısıdır.
mov ecx, love_msg: ecx kaydediciine love_msg etiketinin adresini atar. Bu, yazılacak mesajın adresidir.
mov edx, 30: edx kaydediciine 30 değerini atar. Bu, yazılacak mesajın uzunluğudur.
int 0x80: Bu, sistem çağrısını gerçekleştirir. eax kaydedicisindeki değere göre, ilgili sistem çağrısı yapılır. Bu durumda, yazı sistem çağrısı yapılır ve "Suppressor Coder abiyi seviyor!" mesajı yazdırılır.
mov eax, 1: eax kaydediciine 1 değerini atar. Bu, "çıkış(exit)" sistem çağrısının numarasıdır.- xor ebx, ebx: ebx kaydedicisini sıfırlar. Bu, çıkış kodunu belirler. 0 genellikle başarılı bir çıkışı temsil eder.
- int 0x80: Bu, sistem çağrısını gerçekleştirir. Bu durumda, Çıkış(exit) sistem çağrısı yapılır ve program sonlandırılır.
Ardından:
Kod:
nasm -f elf32 ilk_assembly.asm
Kod:
ld -m elf_i386 -s -o ilk_assembly ilk_assembly.o
Kod:
./ilk_assembly
nasm -f elf32 ilk_assembly.asm: Bu komut, NASM (Netwide Assembler) derleyicisini kullanarak ilk_assembly.asm adlı assembly kaynak dosyasını derler. -f elf32 seçeneği, ELF (Executable and Linkable Format) dosya formatını kullanacağını belirtir. Bu işlem, assembly kodunu derleyerek bir nesne dosyası oluşturur. Nesne dosyasının genellikle uzantısı .o olur.
ld -m elf_i386 -s -o ilk_assembly ilk_assembly.o: Bu komut, ld (Linker) aracını kullanarak nesne dosyasını bağlar (linker). -m elf_i386 seçeneği, 32-bit Intel x86 mimarisi için çalışacak bir program oluşturulmasını belirtir. -s seçeneği, programın sembollerini (debug bilgilerini) siler, bu da üretilen dosyanın daha küçük olmasını sağlar. -o ilk_assembly seçeneği, çıktı dosyasının adını belirtir.
Sonuç olarak, bu adımlar bir araya geldiğinde, ilk_assembly.asm adlı assembly programını derler ve çalıştırabilir bir dosyaya dönüştürürler.