לשורה חדשה יש חשיבות
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 41 מתוך 45.
הוספת 0x0a (תו שורה חדשה) בסוף המחרוזות שלך. אבל מה קורה אם שוכחים אותו?
ללא ירידת שורה:
הטקסט מודפס, אבל הסמן נשאר באותה שורה. כל פלט עתידי יופיע ממש לידו.
דוגמה ללא שורה חדשה:
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פלט:
HelloWorld
אין רווח. אין שורה חדשה. הכול צמוד זה לזה.
עם ירידת שורה:
section .data
first db 'Hello', 0x0a
firstLen equ $ - first
second db 'World', 0x0a
secondLen equ $ - secondפלט:
Hello
World
כל מחרוזת מודפסת בשורה משלה.
מה עושה תו ירידת שורה:
| תו | ASCII | השפעה |
|---|---|---|
0x0a | 10 | מעביר את הסמן לתחילת השורה הבאה |
טעויות נפוצות בירידת שורה:
| טעות | תוצאה |
|---|---|
| אין ירידת שורה כלל | הטקסט מופיע ברצף בשורה אחת |
| ירידת שורה רק בסוף המחרוזת האחרונה | המחרוזות הקודמות מופיעות ברצף, והאחרונה עוברת לשורה הבאה |
| ירידת שורה באמצע מחרוזת | שבירות שורה במקומות בלתי צפויים |
הכלל הבטוח:
תמיד הוסף 0x0a בסוף כל מחרוזת שברצונך שתופיע בשורה משלה.
אתגר
נתונים לך שלושה מחרוזות ללא תווי שורה חדשה. המשימה שלך היא להדפיס אותן כך שיופיעו בשלוש שורות נפרדות.
המחרוזות הן:
| מחרוזת | ערך |
|---|---|
word1 | 'Apple' |
word2 | 'Banana' |
word3 | 'Cherry' |
דרישות:
- הגדר כל מחרוזת עם תו שורה חדשה (
0x0a) בסופה - חשב את האורך של כל מחרוזת באופן אוטומטי
- הדפס את שלוש המחרוזות באמצעות קריאת המערכת write
- צא באופן תקין עם קוד 0
נסו בעצמכם
section .data
; TODO: להגדיר את word1 עם הטקסט הראשון המופיע בהוראות ותו ירידת שורה
; TODO: להגדיר את word2 עם הטקסט השני המופיע בהוראות ותו ירידת שורה
; TODO: להגדיר את word3 עם הטקסט השלישי המופיע בהוראות ותו ירידת שורה
; TODO: לחשב את האורך של כל מחרוזת
section .text
global _start
_start:
; TODO: להדפיס את word1
; TODO: להדפיס את word2
; TODO: להדפיס את word3
; TODO: לסיים את התוכנית בצורה תקינה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
3ההוראה הראשונה – MOV
מהו MOV?MOV מיידיMOV מאוגר לאוגרMOV מזיכרון לאוגרMOV מאוגר לזיכרוןLEA – טעינת כתובתMOV בגדלים שוניםתרגול: החלפת אוגריםסיכום: אתגר MOV6קריאת מערכת לכתיבה
קריאת מערכת לכתיבה (1)מתאר קובץ (rdi)כתובת המאגר (rsi)מספר הבתים (rdx)מחברים הכול יחדהדפסת שתי מחרוזותלשורה חדשה יש חשיבותסיכום: הגדרת writeתרגלו בעצמכם: Assembly אונליין