Yeni Satırın Önemi
Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 41 / 45.
Dizelerinizin sonuna 0x0a (satır sonu) ekliyorsunuz. Peki bunu unutursanız ne olur?
Satır sonu olmadan:
Metin yazdırılır, ancak imleç aynı satırda kalır. Daha sonra yazdırılacak her şey hemen yanına gelir.
Satır sonu olmadan ö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ırla:
section .data
first db 'Hello', 0x0a
firstLen equ $ - first
second db 'World', 0x0a
secondLen equ $ - secondÇıktı:
Hello
WorldHer dize kendi satırına yazdırılır.
Yeni satır ne yapar:
| Karakter | ASCII | Etki |
|---|---|---|
0x0a | 10 | İmleci sonraki satırın başına taşır |
Yaygın satır sonu hataları:
| Hata | Sonuç |
|---|---|
| Hiç satır sonu olmaması | Metin tek satırda birleşir |
| Yalnızca son dizenin sonunda satır sonu olması | Önceki dizeler birleşir, sonuncusu sonraki satıra geçer |
| Bir dizenin ortasında satır sonu olması | Satırlar beklenmeyen yerlerde bölünür |
Güvenli kural:
Kendi satırında olmasını istediğin her dizenin sonuna her zaman 0x0a ekle.
Görev
Satır sonu içermeyen üç karakter dizisi veriliyor. Göreviniz, bunları üç ayrı satırda görünecek şekilde yazdırmaktır.
Karakter dizileri:
| Karakter dizisi | Değer |
|---|---|
word1 | 'Apple' |
word2 | 'Banana' |
word3 | 'Cherry' |
Gereksinimler:
- Her karakter dizisini sonunda satır sonu (
0x0a) olacak şekilde tanımlayın - Her karakter dizisinin uzunluğunu otomatik olarak hesaplayın
- write sistem çağrısını kullanarak üç karakter dizisinin tümünü yazdırın
- 0 koduyla düzgün biçimde çıkın
Kendin dene
section .data
; TODO: word1'i yönergelerde listelenen 1. metin ve yeni satır karakteriyle tanımla
; TODO: word2'yi yönergelerde listelenen 2. metin ve yeni satır karakteriyle tanımla
; TODO: word3'ü yönergelerde listelenen 3. metin ve yeni satır karakteriyle tanımla
; TODO: Her dizgenin uzunluğunu hesapla
section .text
global _start
_start:
; TODO: word1'i yazdır
; TODO: word2'yi yazdır
; TODO: word3'ü yazdır
; TODO: Programdan düzgün şekilde çık
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