まとめ:data.asm のビルド
CoddyのAssemblyジャーニー「基礎」セクションの一部。レッスン 30/45。
チャレンジ
.dataセクションでデータを定義する方法をいくつか学びました。
| レッスン | 学んだこと |
|---|---|
| 3.1 | データを格納する.dataセクション |
| 3.2 | db:バイト(1バイト)を定義する |
| 3.3 | dw:ワード(2バイト)を定義する |
| 3.4 | dd:ダブルワード(4バイト)を定義する |
| 3.5 | dq:クワッドワード(8バイト)を定義する |
| 3.6 | dbによる文字列:テキストを作成する |
| 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ファイルを作成してください。
welcomeという名前の文字列。値は'Welcome!'で、その後に改行(0x0a)を続けますwelcomeLenという名前の定数。$ - welcomeを使って長さを自動的に計算しますscoreという名前のバイト。値は99ですyearという名前のワード。値は2025ですpopulationという名前のダブルワード。値は8500000です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プレイグラウンド