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?
Yeni satır olmadan:
Metin yazdırılır, ancak imleç aynı satırda kalır. Bundan sonraki tüm çıktılar hemen yanına yazılır.
Yeni satır 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ışmış.
Yeni satırla:
section .data
first db 'Hello', 0x0a
firstLen equ $ - first
second db 'World', 0x0a
secondLen equ $ - secondÇıktı:
Hello
World
Her dize kendi satırında yazdırılır.
Yeni satırın yaptığı:
| 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 yok | Metin tek satırda birleşir |
| Yalnızca son dizenin sonunda satır sonu | Önceki dizeler birleşir, sonuncusu sonraki satıra geçer |
| Dizenin ortasında satır sonu | Satır sonları beklenmedik yerlerde oluşur |
Güvenli kural:
Kendi satırında görünmesini istediğin her dizenin sonuna daima 0x0a ekle.
Görev
Size satır sonu içermeyen üç dize veriliyor. Göreviniz, bunları ayrı satırlarda görünecek şekilde yazdırmaktır.
Dizeler şunlardır:
| Dize | Değer |
|---|---|
word1 | 'Apple' |
word2 | 'Banana' |
word3 | 'Cherry' |
Gereksinimler:
- Her dizenin sonuna satır sonu (
0x0a) ekleyerek tanımlayın - Her dizenin uzunluğunu otomatik olarak hesaplayın
- Üç dizenin tümünü write sistem çağrısını kullanarak yazdırın
- 0 koduyla düzgün şekilde çıkın
Kendin dene
section .data
; TODO: word1'i talimatlarda listelenen 1. metin ve yeni satır karakteriyle tanımla
; TODO: word2'yi talimatlarda listelenen 2. metin ve yeni satır karakteriyle tanımla
; TODO: word3'ü talimatlarda 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