aşırı zor daha nodejs öğrenemiyorum ya
Selamlar, ben Supp. Bugün sizlere Assembly ile ekrana nasıl yazı yazdırırız, bunu anlatacağım.
İsimli Dosya içeriği: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:
Ardından:Kod:nasm -f elf32 ilk_assembly.asm
Çalıştımrak için:Kod:ld -m elf_i386 -s -o ilk_assembly ilk_assembly.o
Ne İşe yarıyor?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.