לשורה חדשה יש חשיבות
חלק מהיחידה יסודות במסלול ה-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 עם הטקסט ה-1 המופיע בהוראות ותו ירידת שורה
; TODO: להגדיר את word2 עם הטקסט ה-2 המופיע בהוראות ותו ירידת שורה
; TODO: להגדיר את word3 עם הטקסט ה-3 המופיע בהוראות ותו ירידת שורה
; 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 אונליין