Menu
Coddy logo textTech

İki String Yazdırma

Coddy'nin Assembly Journey'sinin Temeller bölümünün bir parçası — ders 40 / 45.

Bir dizeyi (string) nasıl yazdıracağınızı zaten biliyorsunuz. Peki ya iki ayrı dizeyi yazdırmak isterseniz? Örneğin, "Hello " ve ardından "World!"?

Sadece write sistem çağrısını iki kez çağırırsınız — her bir dize için bir kez.

Nasıl çalışır:

; İlk yazdırma
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; İkinci yazdırma
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

Örnek:

section .data
    first db 'Hello ', 0x0a
    firstLen equ $-first

    second db 'World!', 0x0a
    secondLen equ $-second

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, first
    mov rdx, firstLen
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, second
    mov rdx, secondLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

Çıktı:

Hello World!

Neden bir yerine iki string yazdırılmalı?

NedenÖrnek
Tekrar KullanılabilirlikAynı selamlamayı farklı isimlerle yazdırın
EsneklikKoşullara bağlı olarak farklı mesajlar yazdırın
DüzenFarklı mesajları bellekte ayrı tutun

İstediğiniz kadar string yazdırabilirsiniz:

Her string için write syscall'u tekrarlamanız yeterlidir.

challenge icon

Görev

Size iki dize verilmiştir: 'Good' değerine sahip partOne ve 'bye' değerine sahip partTwo. Her ikisinin de sonunda zaten bir yeni satır karakteri bulunmaktadır.

Çıktının şu şekilde görünmesi için önce partOne ve ardından partTwo yazdıran kodu yazın:

Good

bye

Veri bölümü (data section) ve çıkış sistem çağrısı (exit syscall) zaten sağlanmıştır. Sadece iki write sistem çağrısını yazmanız yeterlidir.

Kendin dene

section .data
    partOne db 'Good', 0x0a
    partOneLen equ $-partOne
    partTwo db 'bye', 0x0a
    partTwoLen equ $-partTwo

section .text
    global _start

_start:
    ; YAPILACAK: write sistem çağrısını kullanarak partOne'ı yazdır
    ; YAPILACAK: write sistem çağrısını kullanarak partTwo'yu yazdır

    mov rax, 60
    mov rdi, 0
    syscall
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler