db - バイトの定義
CoddyのAssemblyジャーニー「基礎」セクションの一部 — レッスン 24/45。
メモリ内にデータを作成する最も基本的な方法は db — Define Byte です。これは1バイト(8ビット)のデータを作成します。
構文:
label db valuelabel— このメモリアドレスに付ける名前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 から 255 | db 100 |
| 文字 | 'A' から 'z' | db 'X' |
| ASCIIコード | 0 から 255 | db 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)チャレンジ
簡単.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このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。