Menu
Coddy logo textTech

İki String Yazdırma

Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 40 / 45.

Bir dizgeyi yazdırmayı zaten biliyorsun. Peki ya iki ayrı dizgeyi yazdırmak istersen? Örneğin, "Hello " ve ardından "World!"?

write sistem çağrısı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ırılır?

NedenÖrnek
Yeniden kullanılabilirlikAynı selamlamayı farklı adlarla yazdırma
EsneklikKoşullara göre farklı iletiler yazdırma
DüzenFarklı 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 verilmiştir: değeri 'Good' olan partOne ve değeri 'bye' olan partTwo. Her ikisinin sonunda zaten bir yeni satır vardır.

Çıktının şunu göstermesi için partOne ve ardından partTwo değerlerini yazdıracak kodu yazın:

Good

bye

Veri bölümü ve çıkış sistem çağrısı zaten sağlanmıştır. Yalnızca iki yazma sistem çağrısını yazmanız gerekir.

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.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Assembly playground