Menu
Coddy logo textTech

まとめ:data.asm のビルド

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

challenge icon

チャレンジ

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

レッスン学んだこと
3.1データを配置する.dataセクション
3.2db:Byte(1 byte)を定義する
3.3dw:Word(2 bytes)を定義する
3.4dd:Double Word(4 bytes)を定義する
3.5dq:Quad Word(8 bytes)を定義する
3.6dbを使ったString:textを作成する
3.7$シンボル:Stringのlengthをautomaticに計算する

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

このchallengeで作成するもの:

次の内容を含むdata.asmファイル:

  • automaticなlength計算を行うString
  • byte value
  • word value
  • double word value
  • quad word value

これらをすべて.dataセクション内に正しく整理します。

完全な<strong>data.asm</strong>の例:

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ファイルを使用して、プログラムに必要なdataを保存します。main.asmファイルはdata.asmをincludeし、定義したlabelとlengthを使用します。

Challenge

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

  1. welcomeとcalledされたString。valueは'Welcome!'で、その後にnewline(0x0a)が続きます
  2. 自動的にlengthを計算するconstant。welcomeLenとcalledされ、$ - welcomeをusingします
  3. value 99のbyte。scoreとcalledされます
  4. value 2025のword。yearとcalledされます
  5. value 8500000のdouble word。populationとcalledされます
  6. value 100000000000のquad word。starsとcalledされます

すべて.dataセクション内に配置します。

自分で試してみよう

%include "data.asm"

section .text
    global _start

_start:
    ; welcome文字列を出力する
    mov rax, 1
    mov rdi, 1
    mov rsi, welcome
    mov rdx, welcomeLen
    syscall
    
    ; 終了
    mov rax, 60
    mov rdi, 0
    syscall

基礎のすべてのレッスン

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