문법 : [변수이름][크기][초기값]
크기 : db(1byte), dw(2bytes), dd(4bytes), dq(8bytes)
section .data
a db 0x11
b dw 0x2222
c dd 0x33333333
d dq 0x4444444444444444
위 데이터 선언 후 빌드시 메모리 정보
그림에서 보듯 변수 a,b,c,d는 연속해서 메모리 공간에 저장되어 있다.
문법 : [변수이름][크기][개수]
크기 : resb(1byte), resw(2bytes), resd(4bytes), resq(8bytes)
section .bss
e resb 10
초기화 되지 않은 데이터는 파일사이즈에 영향을 주지 않는다. (파일사이즈 감소효과)
mov rax, a ;변수 a의 주소값을 rax에 복사
mov rax, [a] ;변수 a의 값을 rax에 복사
;별도 크기지정이 없어서 8바이트값이 들어감 (rax = 8bytes)
;0x4433333333222211 (메모리상의 a부터 연속된 8바이트에 저장된값)
mov al, [a] ;al 1byte에 변수a값 복사
mov [a], byte 0x55 ;변수 a에 0x55 복사
mov [a], word 0x6666 ;변수 a에 0x6666을 복사 (변수 b메모리공간 침범)
mov [a], cl ;cl레지스터의 값을 a에 복사 할수 있음