요약: data.asm 빌드하기
Coddy Assembly 여정의 기초 섹션에 포함된 레슨 — 45개 중 30번째.
챌린지
여러분은 .data 섹션에서 데이터를 정의하는 여러 가지 방법을 배웠습니다:
| 레슨 | 학습 내용 |
|---|---|
| 3.1 | .data 섹션 — 데이터가 들어가는 곳 |
| 3.2 | db — 바이트 정의 (1바이트) |
| 3.3 | dw — 워드 정의 (2바이트) |
| 3.4 | dd — 더블 워드 정의 (4바이트) |
| 3.5 | dq — 쿼드 워드 정의 (8바이트) |
| 3.6 | db를 이용한 문자열 — 텍스트 생성 |
| 3.7 | $ 기호 — 문자열 길이 자동 계산 |
이제 모든 것을 하나로 합쳐 완전한 data.asm 파일을 만들 차례입니다.
이번 챌린지에서 만들 내용:
다음 내용을 포함하는 data.asm 파일:
- 자동 길이 계산 기능이 있는 문자열
- 바이트 값
- 워드 값
- 더블 워드 값
- 쿼드 워드 값
모두 .data 섹션 안에 적절히 구성되어야 합니다.
완성된 <strong>data.asm</strong>의 예시:
section .data
; 자동 길이 계산이 포함된 문자열
msg db 'Hello', 0x0a
msgLen equ $ - msg
; 다양한 크기의 숫자들
smallNum db 100
mediumNum dw 5000
largeNum dd 100000
veryLarge dq 5000000000이것이 중요한 이유:
다음 장들에서는 프로그램에 필요한 데이터를 저장하기 위해 이와 같은 data.asm 파일을 사용하게 됩니다. main.asm 파일은 여러분의 data.asm을 포함(include)하고 여러분이 정의한 레이블과 길이를 사용하게 될 것입니다.
챌린지
다음 내용을 포함하는 완전한 data.asm 파일을 만드세요:
- 값이 'Welcome!'이고 뒤에 줄바꿈(0x0a)이 오는
welcome이라는 이름의 문자열 $ - welcome을 사용하여 길이를 자동으로 계산하는welcomeLen이라는 이름의 상수- 값이 99인
score라는 이름의 바이트 - 값이 2025인
year라는 이름의 워드 - 값이 8500000인
population이라는 이름의 더블 워드 - 값이 100000000000인
stars라는 이름의 쿼드 워드
모든 내용은 .data 섹션 안에 있어야 합니다.
직접 해보기
%include "data.asm"
section .text
global _start
_start:
; 환영 문자열 출력
mov rax, 1
mov rdi, 1
mov rsi, welcome
mov rdx, welcomeLen
syscall
; 종료
mov rax, 60
mov rdi, 0
syscall