1. 변수
데이터를 저장하는 바구니
- 변수 사용 선언
이름과 크기를 지정함.
(1) 초기화 된 데이터(data 섹션)
[변수이름] [크기] [초기값]
[크기] : db(1) dw(2) dd(4) dq(8)
(byte, word, dword, qword)
(2) 초기화 되지 않은 데이터(bss 섹션)
[변수이름] [크기] [개수]
[크기] : resb(1) resw(2) resd(4) resq(8)
-> 모든 값이 0으로 초기화 되어 있음 -> 실행파일의 크기를 줄일 수 있음.
2. 메모리와 레지스터
- 메모리의 주소 값을 저장
mov rax, a ; a(메모리)의 주소 값을 rax(레지스터)에 저장 |
각 메모리에는 주소가 있음.
변수 'a'의 메모리 주소는 0x403010
변수 'b'의 메모리 주소는 'a'의 주소에 1바이트를 더하면 됨 -> 0x403011
- 메모리에 저장된 데이터를 저장
mov rax, [a] ; a(메모리)의 데이터 값을 rax(레지스터)에 저장(데이터를 8바이트만큼 가져옴) |
rax 안에 변수 'a'의 값을 저장하기 위해서는 위의 명령어 처럼 사용한다.
- 변수에 상수를 저장할 때
mov [a], byte 0x55 |
mov [a], word 0x6666 |
mov [a], dword 0x77777777 |
mov [a], cl ; cl에 저장된 값을 변수 'a'에 저장함 |
상수 왼쪽에 데이터 형식을 지정해준다.
변수의 크기를 넘으면 다른 변수의 데이터 영역을 침범해서 덮어씌움.
'어셈블리' 카테고리의 다른 글
0-6. 사칙연산 (0) | 2023.04.27 |
---|---|
0-5. 문자와 엔디안 (0) | 2023.04.27 |
0-3. 레지스터 기초 (0) | 2023.04.26 |
0-2. 데이터 기초 (0) | 2023.04.26 |
0-1. SASM 기본 설정 및 어셈블리어 (0) | 2023.04.26 |