Menu
Coddy logo textTech

dd - 더블 워드 정의

Coddy Assembly 여정의 기초 섹션에 포함된 레슨 — 45개 중 26번째.

dw는 2바이트의 데이터를 생성합니다. 하지만 때로는 더 큰 숫자가 필요할 때가 있습니다. 그럴 때는 ddDefine Double Word를 사용합니다.

x86 어셈블리에서 더블 워드(double word)는 4바이트(32비트)입니다.

구문:

label dd value

예제:

section .data
    myNumber dd 50000        ; 4바이트, 값 50000
    bigNum   dd 4000000      ; 4바이트, 값 400만
    max32    dd 4294967295   ; 최대 32비트 값

비교 표:

지시어크기범위사용할 레지스터
db1 바이트0 ~ 255al
dw2 바이트0 ~ 65,535ax
dd4 바이트0 ~ 4,294,967,295eax

코드에서 double word를 사용하는 방법:

section .data
    myNumber dd 50000

section .text
    mov eax, [myNumber]    ; eax에 값을 로드합니다
    add eax, 10000         ; eax는 60000이 됩니다
    mov [myNumber], eax    ; 다시 저장합니다

중요한 규칙:

규칙설명
로드하거나 저장하려면 eax를 사용하세요eax는 32비트 레지스터입니다
challenge icon

챌린지

쉬움

.data 섹션에 값이 125000인 distance라는 이름의 double word를 생성하세요.

직접 해보기

%include "data.asm"

section .data
    msg db 'distance = '
    msg_len equ $ - msg
    newline db 0xa

section .bss
    buffer resb 32

section .text
    global _start

_start:
    ; eax에 double word 값을 로드합니다
    mov eax, [distance]
    
    ; eax를 10진수 문자열로 변환합니다
    mov rsi, buffer
    add rsi, 31          ; 버퍼의 끝으로 이동합니다
    mov byte [rsi], 0    ; 널 종료 문자
    
    mov ecx, 10          ; 10진수 변환을 위한 제수

convert_loop:
    xor edx, edx         ; 나눗셈을 위해 edx를 0으로 초기화합니다
    div ecx              ; eax를 10으로 나눕니다, eax = 몫, edx = 나머지
    add dl, '0'          ; 나머지를 ASCII로 변환합니다
    dec rsi
    mov [rsi], dl        ; 숫자를 저장합니다
    cmp eax, 0
    jnz convert_loop

    ; 값이 덮어씌워지기 전에 숫자 포인터와 길이를 저장합니다
    mov r8, rsi          ; r8 = 첫 번째 숫자에 대한 포인터
    mov r9, buffer
    add r9, 31
    sub r9, rsi          ; r9 = 숫자의 개수
    
    ; 메시지 출력
    mov rax, 1
    mov rdi, 1
    mov rdx, msg_len
    mov rsi, msg
    syscall
    
    ; 숫자 출력
    mov rax, 1
    mov rdi, 1
    mov rsi, r8
    mov rdx, r9
    syscall
    
    ; 줄바꿈 출력
    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall
    
    ; 종료
    mov rax, 60
    mov rdi, 0
    syscall
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨