Menu
Coddy logo textTech

Yeni Satırın Önemi

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

Dizelerinizin sonuna 0x0a (yeni satır) ekliyordunuz. Peki ya unutursanız ne olur?

Yeni satır olmadan:

Metin yazdırılır, ancak imleç aynı satırda kalır. Gelecekteki herhangi bir çıktı hemen yanına gelecektir.

Yeni satır içermeyen örnek:

section .data
    first db 'Hello'
    firstLen equ $ - first
    second db 'World'
    secondLen equ $ - second

section .text
    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

Çıktı:

HelloWorld

Boşluk yok. Yeni satır yok. Her şey birbirine yapışık.

Yeni satır ile:

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

Çıktı:

Hello World

Her dize kendi satırına yazdırılır.

Yeni satırın yaptığı:

KarakterASCIIEtki
0x0a10İmleci bir sonraki satırın başına taşır

Yaygın yeni satır hataları:

HataSonuç
Hiç yeni satır yokMetin tek bir satırda birleşir
Yalnızca son dizginin sonunda yeni satırÖnceki dizgiler birleşir, sonuncusu bir sonraki satıra geçer
Bir dizginin ortasında yeni satırBeklenmedik yerlerde satır sonları

Güvenli kural:

Kendi satırında olmasını istediğiniz her dizenin sonuna daima 0x0a ekleyin.

challenge icon

Görev

Size yeni satır karakteri içermeyen üç dize verilmiştir. Göreviniz, bunları üç ayrı satırda görünecek şekilde yazdırmaktır.

Dizeler şunlardır:

DizeDeğer
word1'Apple'
word2'Banana'
word3'Cherry'

Gereksinimler:

  • Her dizeyi sonuna bir yeni satır (0x0a) ekleyerek tanımlayın
  • Her dizenin uzunluğunu otomatik olarak hesaplayın
  • Üç dizeyi de write syscall kullanarak yazdırın
  • 0 kodu ile temiz bir şekilde çıkış yapın

Kendin dene

section .data
    ; YAPILACAK: word1'i 'Apple' ve yeni satır ile tanımlayın
    ; YAPILACAK: word2'yi 'Banana' ve yeni satır ile tanımlayın
    ; YAPILACAK: word3'ü 'Cherry' ve yeni satır ile tanımlayın
    ; YAPILACAK: Her dize için uzunlukları hesaplayın

section .text
    global _start

_start:
    ; YAPILACAK: word1'i yazdırın
    ; YAPILACAK: word2'yi yazdırın
    ; YAPILACAK: word3'ü yazdırın

    ; YAPILACAK: Temiz bir şekilde çıkış yapınsection .data
    word1 db 'Apple', 0x0a
    word1Len equ $ - word1
    word2 db 'Banana', 0x0a
    word2Len equ $ - word2
    word3 db 'Cherry', 0x0a
    word3Len equ $ - word3

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, word1
    mov rdx, word1Len
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, word2
    mov rdx, word2Len
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, word3
    mov rdx, word3Len
    syscall

    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