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