Menu
CoddyTech

まとめ:data.asm のビルド

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

challenge icon

チャレンジ

.dataセクションでデータを定義する方法をいくつか学びました。

レッスン学んだこと
3.1データを格納する.dataセクション
3.2db:バイト(1バイト)を定義する
3.3dw:ワード(2バイト)を定義する
3.4dd:ダブルワード(4バイト)を定義する
3.5dq:クワッドワード(8バイト)を定義する
3.6dbによる文字列:テキストを作成する
3.7$記号:文字列の長さを自動的に計算する

それでは、これらすべてを組み合わせて、完全なdata.asmファイルを作成しましょう。

このチャレンジで作成するもの:

以下を含むdata.asmファイル:

  • 長さを自動計算する文字列
  • バイト値
  • ワード値
  • ダブルワード値
  • クワッドワード値

すべてを.dataセクション内に適切に整理します。

完全なdata.asmの例:

section .data
    ; String with automatic length
    msg db 'Hello', 0x0a
    msgLen equ $ - msg
    
    ; Numbers of different sizes
    smallNum db 100
    mediumNum dw 5000
    largeNum dd 100000
    veryLarge dq 5000000000

これが重要な理由:

次の章では、このようなdata.asmファイルを使って、プログラムに必要なデータを格納します。main.asmファイルでdata.asmをインクルードし、定義したラベルと長さを使用します。

チャレンジ

次の内容を含む完全なdata.asmファイルを作成してください。

  1. welcomeという名前の文字列。値は'Welcome!'で、その後に改行(0x0a)を続けます
  2. welcomeLenという名前の定数。$ - welcomeを使って長さを自動的に計算します
  3. scoreという名前のバイト。値は99です
  4. yearという名前のワード。値は2025です
  5. populationという名前のダブルワード。値は8500000です
  6. starsという名前のクワッドワード。値は100000000000です

すべてを.dataセクション内に記述してください。

自分で試してみよう

%include "data.asm"

section .text
    global _start

_start:
    ; ウェルカムメッセージを出力する
    mov rax, 1
    mov rdi, 1
    mov rsi, welcome
    mov rdx, welcomeLen
    syscall
    
    ; 終了する
    mov rax, 60
    mov rdi, 0
    syscall

基礎のすべてのレッスン

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