줄바꿈의 중요성
Coddy Assembly 여정의 기초 섹션에 포함된 레슨. 45개 중 41번째.
문자열 끝에 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: 지침에 나열된 1번째 텍스트와 줄바꿈 문자로 word1 정의하기
; TODO: 지침에 나열된 2번째 텍스트와 줄바꿈 문자로 word2 정의하기
; TODO: 지침에 나열된 3번째 텍스트와 줄바꿈 문자로 word3 정의하기
; TODO: 각 문자열의 길이 계산하기
section .text
global _start
_start:
; TODO: word1 출력하기
; TODO: word2 출력하기
; TODO: word3 출력하기
; TODO: 정상적으로 종료하기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Assembly 플레이그라운드