ASCII와 16진수
Coddy Assembly 여정의 기초 섹션에 포함된 레슨 — 45개 중 13번째.
컴퓨터는 숫자만 이해합니다. 그렇다면 컴퓨터는 'A', 'b', '?'와 같은 문자를 어떻게 저장할까요?
정답은 ASCII (American Standard Code for Information Interchange)입니다. ASCII는 모든 문자에 숫자를 할당하는 표입니다.
ASCII 작동 방식:
| 문자 | ASCII 번호 (10진수) | ASCII 번호 (16진수) |
|---|---|---|
| 'A' | 65 | 0x41 |
| 'B' | 66 | 0x42 |
| 'C' | 67 | 0x43 |
| 'a' | 97 | 0x61 |
| 'b' | 98 | 0x62 |
| '0' | 48 | 0x30 |
| '1' | 49 | 0x31 |
| ' ' (공백) | 32 | 0x20 |
| '\n' (줄바꿈) | 10 | 0x0A |
| '\0' (null) | 0 | 0x00 |
어셈블리를 위해 암기해야 할 중요한 ASCII 값:
| 문자 | 16진수 | 필요한 이유 |
|---|---|---|
| 'A' | 0x41 | 대문자가 여기서 시작됩니다 |
| 'a' | 0x61 | 소문자가 여기서 시작됩니다 |
| '0' | 0x30 | 숫자가 여기서 시작됩니다 |
| 공백 | 0x20 | 단어 구분 |
줄바꿈 (\n) | 0x0A | 다음 줄로 이동 |
널 (\0) | 0x00 | 문자열 끝 표시 |
패턴을 확인해 보세요:
| 패턴 | 예시 |
|---|---|
| 대문자 A-Z는 연속적입니다 | 'A'=65, 'B'=66, 'C'=67... |
| 소문자 a-z는 연속적입니다 | 'a'=97, 'b'=98, 'c'=99... |
| 숫자 0-9는 연속적입니다 | '0'=48, '1'=49, '2'=50... |
| 소문자 = 대문자 + 32 | 'a' (97) = 'A' (65) + 32 |
문자열이 메모리에 저장되는 방식:
줄바꿈 문자가 포함된 단어 "Hi"는 다음과 같이 저장됩니다:
| 문자 | 16진수 | 2진수 |
|---|---|---|
| 'H' | 0x48 | 01001000 |
| 'i' | 0x69 | 01101001 |
| '\n' | 0x0A | 00001010 |
어셈블리에서는 이를 다음과 같이 작성합니다: db 'Hi', 0x0A
어셈블리에서 이것이 필요한 이유:
data.asm에서 문자열을 정의할 때, 메모리에 ASCII 코드를 저장하게 됩니다. 문자열을 출력할 때, 운영 체제는 해당 ASCII 코드를 읽고 그에 일치하는 문자를 표시합니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.