레지스터 <-> 메모리 사이의 상호작용
1. 데이터 수 체계
8 bit = 1 byte
16 bit = 2 byte = 1 word
32 bit = 4 byte = 2 word = Dword (Double Word)
64 bit = 8 byte = 4 word = Qword (Quad Word)
2. 레지스터(Register Set)를 사용하는 이유가 뭘까?
CPU에서 하드디스크까지 데이터가 이동하는 시간은 너무 오래걸림.
연산 결과물을 레지스터에 저장하면 더 빠르게 연산하고 저장할 수 있음.
3. 레지스터의 구조
레지스터를 용량 별로 사용할 수 있음
rax : 64 bit, eax ; 32 bit, ax : 16 bit, ah, al : 8 bit
rbx, ebx, bx, bh, bl
rcx, ecx, cx, ch, cl ...
4. Code
%include "io64.inc" section .text global main main: mov rbp, rsp ;8 bit = 1 byte ;16 bit = 2 byte = 1 word ;32 bit = 4 byte = 2 word = Dword (Double Word) ;64 bit = 8 byte = 4 word = Qword (Quad Word) ; mov reg1, cst ; reg1에 정보를 저장 ; mov reg1, reg2 ; reg2의 정보를 reg1에 이동 mov eax, 0x1234 mov rbx, 0x12345678 mov cl, 0xff mov al, 0x00 mov rax, rdx xor rax, rax ret ;section .data |
al에 0x00을 입력했는데 eax에 0x1200이 입력된 이유는
0 0 0 1 / 0 0 1 0 / 0 0 0 0 / 0 0 0 0
우측의 1byte를 0으로 바꾸었기 때문
'어셈블리' 카테고리의 다른 글
0-6. 사칙연산 (0) | 2023.04.27 |
---|---|
0-5. 문자와 엔디안 (0) | 2023.04.27 |
0-4. 변수와 레지스터 (0) | 2023.04.27 |
0-2. 데이터 기초 (0) | 2023.04.26 |
0-1. SASM 기본 설정 및 어셈블리어 (0) | 2023.04.26 |