Menu
Coddy logo textTech

db - バイトの定義

CoddyのAssemblyジャーニー「基礎」セクションの一部。レッスン 24/45。

メモリ内にデータを作成する最も基本的な方法は db です。Define Byte。これは 1 バイト(8 ビット)のデータを作成します。

構文:

label db value
  • label: このメモリアドレスに付ける名前
  • db: Define Byte ディレクティブ
  • value: 保存する数値または文字(0~255)

例:

section .data
    age db 25          ; 「age」というバイトを作成し、25を格納します
    grade db 'A'       ; 「grade」というバイトを作成し、65('A'のASCII)を格納します
    zero db 0          ; 「zero」というバイトを作成し、0を格納します

1 byte に Store できるもの:

種類範囲
小さな number0 to 255db 100
Character'A' to 'z'db 'X'
ASCII コード0 to 255db 65 ('A' と同じ)

1 行に複数の bytes:

カンマを使って、複数の bytes を連続して定義できます:

section .data
    numbers db 5, 10, 15, 20    ; 4バイトを作成: 5, 10, 15, 20
    letters db 'A', 'B', 'C'    ; 3バイトを作成: 65, 66, 67

コードで byte を使用する方法:

section .data
    myByte db 42

section .text
    mov al, [myByte]    ; 値 42 を al にロードする
    add al, 1           ; al が 43 になる
    mov [myByte], al    ; 43 を myByte に戻して格納する

重要なルール:

ルール説明
値は1 byteに収まる必要があります0から255(または単一のcharacter)
alを使用してloadまたはstoreするalはbytes用の8ビットレジスタです

よくある間違い:

; 間違い: バイトには大きすぎる数値を格納しようとしている
section .data
    error db 300    ; 300 は大きすぎます (最大 255)
challenge icon

チャレンジ

簡単

.data セクションで、値 15 の score という名前の byte を Create します。

正しい .data セクションと db ディレクティブを含む data.asm ファイルを記述します。

自分で試してみよう

%include "data.asm"

section .text
    global _start

_start:
    mov al, [score]
    
    mov r12, rax
    
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Assemblyプレイグラウンド