0-3. 레지스터 기초

Crat3 ㅣ 2023. 4. 26. 18:19

레지스터 <-> 메모리 사이의 상호작용

레지스터

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