프로그래밍 언어 공부/어셈블리어

변수 선언 구조, 메모리 <-> 레지스터 데이터 저장

설탕중독 2022. 5. 12. 17:30

메모리 구조 중 

section .data는 초기값이 있는 데이터가 저장된다.

[변수이름] [크기] [초기값] 

위의 구조로 데이터를 .data 섹션에 저장해준다.

SASM을 이용해 메모리에 데이터 저장

[크기] : db(1 byte), dw(2 byte), dd(4 byte), dq(8 byte)


메모리 구조 중

section .bss는 초기값이 없는 데이터가 저장된다.

[변수이름] [크기] [개수]

위의 구조로 데이터를 .bss 섹션에 저장한다.

[크기] : resb(1 byte), resw(2 byte), resd(4 byte), resq(8 byte)


메모리 <-> 레지스터

mov 명령을 이용해서 메모리에 저장되어 있는 데이터를 레지스터로 복사

mov al, a : a라는 변수의 주소값을 al에 복사

mov bl, [a] : a라는 변수 안에 있는 데이터 값을 bl에 복사

대괄호를 쓰지 않으면 변수의 주소값을 불러온다.

변수를 대괄호 안에 넣으면 주소값이 아닌 변수 안에 있는 데이터 값을 불러온다.

 

 

반대로도 가능하다

a라는 변수안에 직접 데이터를 저장한다. 여기서 데이터를 저장할 때

크기를 직접 지정해주어야 에러가 발생하지 않는다.

마지막 코드는 레지스터 cl에 있는 값을 메모리 a라는 변수안에 직접 저장한다.