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 (yeni satır) ekliyorsunuz. Peki bunu unutursanız ne olur?
Satır sonu olmadan:
Metin yazdırılır, ancak imleç aynı satırda kalır. Gelecekteki tüm çıktılar hemen yanında görünü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. Satır sonu yok. Her şey birbirine yapışık.
Satır sonuyla:
section .data
first db 'Hello', 0x0a
firstLen equ $ - first
second db 'World', 0x0a
secondLen equ $ - secondÇıktı:
Hello
World
Her string kendi satırında yazdırılır.
Satır sonunun yaptığı:
| 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 bir sonraki satıra geçer |
| Bir dizenin ortasında satır sonu | Beklenmeyen yerlerde satır sonları oluşur |
Güvenli kural:
Kendi satırında olmasını istediğin her string'in sonuna her zaman 0x0a ekle.
Görev
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:
| Dize | Değer |
|---|---|
word1 | 'Apple' |
word2 | 'Banana' |
word3 | 'Cherry' |
Gereksinimler:
- Her dizeyi sonunda bir yeni satır karakteri (
0x0a) olacak şekilde tanımlayın - Her dizenin uzunluğunu otomatik olarak hesaplayın
- Üç dizenin tamamını write sistem çağrısını kullanarak yazdırın
- 0 koduyla temiz bir şekilde çıkın
Kendin dene
section .data
; TODO: word1'i talimatlarda listelenen 1. metin ve satır sonu ile tanımla
; TODO: word2'yi talimatlarda listelenen 2. metin ve satır sonu ile tanımla
; TODO: word3'ü talimatlarda listelenen 3. metin ve satır sonu ile tanımla
; TODO: Her dize için uzunlukları hesapla
section .text
global _start
_start:
; TODO: word1'i yazdır
; TODO: word2'yi yazdır
; TODO: word3'ü yazdır
; TODO: Temiz bir ş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