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 nasıl yazdıracağını zaten biliyorsun. Peki ya iki ayrı dizeyi yazdırmak istersen? Örneğin, "Hello " ve ardından "World!"?

write syscall'ını her dize için bir kez olmak üzere iki kez çağırmanız yeterlidir.

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 tek bir dize yerine iki dize yazdırmalı?

NedenÖrnek
Yeniden kullanılabilirlikAynı selamlamayı farklı adlarla yazdırma
EsneklikKoşullara göre farklı iletiler yazdırma
OrganizasyonFarklı iletileri bellekte ayrı tutma

İstediğiniz kadar dize yazdırabilirsiniz:

Her dize için write sistem çağrısını tekrarlamanız yeterlidir.

challenge icon

Görev

Size iki dize veriliyor: partOne ve değeri 'Good', partTwo ve değeri 'bye'. Her ikisinin de sonunda zaten bir yeni satır var.

Çıktının şöyle görünmesi için partOne ve ardından partTwo değerlerini yazdıracak kodu yazın:

Good

bye

data bölümü ve çıkış syscall'ı zaten sağlanmıştır. Yalnızca iki write syscall'ını yazmanız gerekiyor.

Kendin dene

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

section .text
    global _start

_start:
    ; TODO: partOne'ı write syscall kullanarak yazdır
    ; TODO: partTwo'yu write syscall kullanarak 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

Kendi başına pratik yap: Assembly playground