Menu
Coddy logo textTech

db - バイトの定義

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

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

構文:

label db value
  • label — このメモリアドレスに付ける名前
  • db — Define Byte(バイト定義)ディレクティブ
  • value — 格納する数値または文字(0から255)

例:

section .data
    age db 25          ; 25を格納する"age"という名前のバイトを作成します
    grade db 'A'       ; 65('A'のASCIIコード)を格納する"grade"という名前のバイトを作成します
    zero db 0          ; 0を格納する"zero"という名前のバイトを作成します

1バイトに保存できるもの:

種類範囲
小さな数値0 から 255db 100
文字'A' から 'z'db 'X'
ASCIIコード0 から 255db 65 ('A' と同じ)

1行に複数のバイト:

カンマを使用して、複数のバイトを連続して定義できます:

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

コード内でバイトを使用する方法:

section .data
    myByte db 42

section .text
    mov al, [myByte]    ; 値42をalにロードする
    add al, 1           ; alは43になる
    mov [myByte], al    ; 43をmyByteに書き戻す

重要なルール:

ルール説明
値は1バイトに収まる必要があります0から255(または単一の文字)
ロードまたはストアにはalを使用しますalはバイト用の8ビットレジスタです

よくある間違い:

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

チャレンジ

簡単

.data セクション内に、値が 15 の score という名前のバイトを作成してください。

正しい .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腕試し

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

基礎のすべてのレッスン