• 締切済み

アセンブリ言語について。

熱血!アセンブラ入門という書籍を借りてきたのですが、どこから、アセンブリ言語が組めるものをダウンロードすれば良いのでしょうか? また、また、そのダウンロードしたものは、独習アセンブラという書籍でも使えるのでしょうか?教えていただけると助かります。すみません。以下のURLです。 http://kozos.jp/books/asm/menu.html

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.9

「熱血!アセンブラ入門」の環境構築を試してみました。 1.VirtualBoxをインストール 2.http://kozos.jp/vmimage/burning-asm.htmlからリンクされているCentOS6.5イメージ(cross-CentOS.ova)をダウンロード 3.ダウンロードしたovaファイルをVirtualBoxで開いて仮想マシンを作成 4.作成した仮想マシンを起動 5.http://kozos.jp/vmimage/progtool.htmlに書かれているユーザーID・パスワードを使ってCentOSにログイン 6.http://kozos.jp/vmimage/burning-asm.htmlに書かれている"cd cross/sample"以下のコマンドを実行 1と2の手順が終わっていれば、それ以降の部分は5分とかからずに完了しました。もちろん、PCの性能やLinuxの使い方についての知識量によって大きく変わります。

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.8

> そのダウンロードしたものは、独習アセンブラという書籍でも使えるのでしょうか? この部分にも答えておきましょう。使えません。 「独習アセンブラ」の2005年版はNASMというアセンブラを使うことが前提になっていて、別物です。 同じタイトルで著者が異なる新版が昨年秋に出たようで(今知った)、こちらはGNUアセンブラを使うみたいですが、「熱血!アセンブラ入門」のツールを流用できるかは怪しいです。別途セットアップしたほうがいいと思います。

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.7

>上記のURLは熱血!アセンブラ入門では使えないのでしょうか? さあ? 書籍を持っていないので確認できません。 ただしhttp://kozos.jp/vmimage/burning-asm.htmlの説明を見ると、「大熱血!アセンブラ入門」の第1部~第3部で使っているもの(cross-20130826.zip)は「熱血!アセンブラ入門」と共通で使えそうに読めます。 cross-20130826.zipのREADME.txtを読むと、これをセットアップするにはFreeBSD・CentOS・Ubuntu・Cygwinのいずれかが必要で、UNIX系OSのコマンドラインを扱う知識が前提なのですが、その経験はお持ちですか? 上記のOSを新規に用意するところから始めるくらいなら、回答No.4に書いたとおりOVAファイルをダウンロードしてVirtualBoxの環境を作るほうがお手軽かつ失敗しにくい気がします。 いずれにしても初心者にはまあまあハードルが高いです。

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.6

>大熱血!アセンブラ入門と何か違うのでしょうか? 「大熱血!アセンブラ入門」は「熱血!アセンブラ入門」に加筆したもので、扱うCPUの種類が増えていますが、コンセプトは変わっていないようです。すなわち、特定のCPUのアセンブラでプログラムを書けるようになることが目的なのではなく、いろいろなアセンブラのコードを眺めてCPU毎の設計や考え方の違いを知ることで広く浅く知識を得るための「読みモノ」です。また、C言語のプログラムとそのアセンブラコードを見比べながら話が進むので、ある程度のC言語の知識が前提として必要です。 なお、私は2冊とも持っておらず、目次や試し読み、レビューを見て回答しています。 質問者さんがアセンブラを学びたい目的は何ですか? 繰り返しますが、この2冊はアセンブラでプログラムを書けるようになることを目的とした本ではありません。質問者さんの目的次第では他の本で学んだほうがいいかもしれないですよ。

zasx1097
質問者

補足

http://kozos.jp/books/asm/download-asm3.html 上記のURLは熱血!アセンブラ入門では使えないのでしょうか?教えていただけると助かります。すみません。

回答No.5

FreeBSDならデフォルトで対応していて、 それなりに調べれば、実行ファイルの作成まで 漕ぎ着けなくもないですが、 linux系だとyumなりaptなりで環境を 入れる必要があるのではないかと思います。 windowsだとアセンブリコードの実行以前に アセンブラ環境の構築のほうが大変そうです。 情報技術者試験で用いられるアセンブラ環境を 利用するのが、入門としては一番適切だと思います。  ※私の受験当時は「CASL」とか言う名前でしたが、   シミュレータも充実しており、windows上で   普通に実行できるので、困ることはないと思います。 この本は、UNIX系OSに精通しているか、C言語で相当な スキルのある人が「入門」する本です。

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.4

「熱血! アセンブラ入門」は様々なCPUのアセンブラを扱っていて、特定のCPUのアセンブラでバリバリプログラムを書けるようになろうという目的の本ではありません。 16ページの「本書の読み進めかた」には「本書は『技術書』というより『読みモノ』ですから,読者のかたの好きなように好きな順番で読み進めていただいてかまいません.(中略)環境構築は,してもしなくてもかまいません.あくまで『読みモノ』として環境構築無しで読み進めてもいいと思います.」と書かれています。 自分がもしこの環境構築をするなら、http://kozos.jp/vmimage/burning-asm.htmlの中段にあるCentOS6.5イメージをダウンロードして、VirtualBoxを使って仮想マシンを作るのが一番容易そうに思えます。VirtualBoxのインストールが済んでいる状態なら、このサイトからダウンロードするファイルはOVAファイル一つだけです。しかし、前提としてVirtulBoxやLinux(CentOS)の使い方を知っている必要があるわけですが、質問者さんがどんなPCを持っていてどれだけの知識があるのかが分からないのですよ。 ですから、筆者が書いているとおり環境構築することにこだわらず、まずは一通り読んでみることをお勧めします。

zasx1097
質問者

補足

大熱血!アセンブラ入門と何か違うのでしょうか?教えていただけると助かります。すみません。

回答No.3

http://kozos.jp/books/asm/gcc4.html 貴方が張ったサイトに説明が書いてますよ。 「ツール類について」 で一か所にまとまってますよ。 ただGNUなので、ディストリビューション依存がある事と、 ダウンロードは危険だという事は考慮してください。 ウイルスだのなんだのという意味ではなく、 この人が書いた記事時代よりも、新しいものがあるとき、 わざわざ古いアーキテクチャーを入れることに対する 危険性を考えてね!の意味です。 普通というか今は、こうやってインストールせず、 バージョン指定なしで、yumやdnfでパッケージで 落とすのが普通ですが。 別にこのサイトの指示取り、ターボール持ってきて 手動でインストールしてももちろん構いませんし、 rpmを持ってきて入れても別にOKです。 恐らくですが、貴方の場合はCygwinによるMing/GCC環境か VMを使うほうが良いかと。 (それについてもサイトに書かれてますので、まずは熟読を) 画像で、別にバージョンなんか指定しなくても、 最適な最新版を最適なディストリに入れてくれている様子を 追加しておきます。 こんだけの作業なので、面倒なターボール の手動インストより、確実に楽かとは思いますが。

  • sknbsknb2
  • ベストアンサー率38% (1127/2909)
回答No.2

アセンブラというのは、個々のCPUの命令を直接記述するという点で、C言語やその他高級言語とは全く違うものですが、そのへんのイメージは明確にできているでしょうか? それができているのであれば、対象のCPUとOSを特定し、対応するアセンブラを探すだけです。

回答No.1

まだ、アセンブラこだわってたんだ。。 まず回答としてあなたが書いているサイトにすでに、 GCCの事やそれどころか稼働する状態のLinuxが VMであがってますが、読んでますか? 以前から内容を読まないで進む傾向があるようですが、 このサイトにすべてアップされているようなので、 再度熟読を! なお、アセンブラはCPU依存なので、 CPUに依存しないLinuxで勉強することのリスクも考えてみてください。 例:ARMを覚えたいのにx86のLinuxで勉強したらどうなるか? ひとまず、GNUのGCC系をこのサイトでは紹介しており これらは、元々フリーなため、いつでも導入できますし、 ご自身で使っているLinuxに導入することもできます。 また、CygwinなどでWindowsにMing/GCCとして インストールすることもできます。 後は、好みの方法を。 また、このサイトのやり方以外も複数あります。 Visual-Studioなどでも、ドライバーの深い部分は アセンブラが使われるため、これの開発が可能となってます。 以上です。

zasx1097
質問者

補足

どこでしょうか?どこをインストールすれば良いのでしょうか?教えていただけると助かります。すみません。

関連するQ&A

  • ■ アセンブリ言語の入門書について ■

    アセンブリ言語の入門書を探しております。 アセンブリ言語を通して、コンピューターの動きを勉強したいと考えています。 特にCPUの種類は問いませんが、x86に繋がるような内容を希望しています。 候補としましては、「はじめて読む8086」や「アセンブリ言語スタートブック」が上がっています。 1.図解を主に用いて分かりやすく解説している 2.CPU内の各種回路をどのように流れて処理をするかを図を用いて解説している 以上の条件に合ったような書籍をお心当たりのある方、教えて頂ければ助かります。 よろしくお願いいたします。

  • アセンブラ、アセンブリ言語の書籍について

    会社で、ルネサスのSRA74というアセンブラを扱うことになりました。 アセンブリ言語については全くの素人なので本を購入しようとしたのですが、PIC、H8、Z80などはあるのですが、SRA74に該当する書籍がありません。 下記アドレスのガイドブックを見てもいまいちわからないのですが、学習する上で良い書籍や方法はないでしょうか? <http://documentation.renesas.com/jpn/products/tool/rjj10j1252_sra74_g.pdf> どうかよろしくお願いします。

  • アセンブリ言語のラベルについて

    MASMアセンブラを使ってアセンブリ言語の勉強を始めました。 ラベルについてなのですが、以下のようなコードがあります。 msg db "ABCD" これは、msgという名前でメモリに4バイト確保して文字列で初期化するということだと分かりました。 そこで質問なのですが、msgというのはこの文字列の先頭アドレスを表すということですが、このmsgは上記の"ABCD"のようにメモリに領域を確保されて保存されているものなのでしょうか(C言語のポインタのようなもの)。 それとも、即値のように直接ソースコード上に書かれているものなのでしょうか。(つまり、アセンブルをするとソースコード上のmsgが"ABCD"の先頭アドレスに置き換わるようなことがおこるのでしょうか) 言葉足らずですみませんが、よろしくお願いします。

  • アセンブリ言語の始め方

    Visual Studio 2012を使ってアセンブリ言語のプログラミングをしたいのですが、どうやって始めたらいいかわかりません。Kip Irvineという人のサイトにいって必要なものをダウンロードしたはずなのですが、デバッグするとエラーが出てしまいます。 Error 2 error MSB3721: The command "ml64.exe /c /nologo /Zi /Fo"x64\Release\main.obj" /I "c:\Irvine" /W3 /errorReport:prompt /Tamain.asm" exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\masm.targets 49 5 ASM_Project Error 1 error A1000: cannot open file : Irvine32.inc C:\IrvineExamplesVS2012\Examples\Project_sample\main.asm 3 1 ASM_Project これだけの情報ではわからないかも知れないですが、なにか必要な情報があったら追記します。 回答よろしくお願いします!

  • アセンブリ言語の質問のコト

    アセンブリ言語で、最大公約数を求めるプログラムを つくらなければならないんですが、 まぁ...だいたいできたんですが...ちょっとわからないトコが ありまして... acc(アキュムレータ)にはいってるデータが、負のバアイに、 それを正にかえたいんですが、どうしたらいいんでしょう? ビット反転さして、1足したらいいんじゃないか、ってのを思いついたんですが、 (これもあってるのかどうか自信ないんですけど...) ナンカ、反転さす命令がないみたいで...がっくシ... ということで、だれかお力ゾエをおねがい致しまス。 必要かどうかワカリマセンが、とりあえず、 ちょっとだけ命令を以下に挙げておきます。 (たしか、アセンブリ言語って、それぞれ違うっていっても、どれも結構  似てるんですよね...ぼくの頼りない知識がタシカなら...) ADD,SUB,INC,DEC,OR,EOR,AND,NOT, LSL,ASL,LSR,ASR,ROL,ROR,SWP JP,JPc,JPz,JPs,JPv,JP,JP,Call,Ret,

  • アセンブリ言語について。

    >2進数の羅列では人間にはあまりに読み書きしにくいからです。 >それを命令単位に区切って、英単語を元にした名前を与えたのが、 >アセンブリ言語です。 ニーモニックとは、その命令の名前の事です。 簡潔に要点がまとまっている、すばらしい説明ですね。その通りです。 これで理解できないなら、追加の説明のしようがありません。 (なお、このように、他人の発言は引用符を付けて引用すると、わかりやすくなります。是非そうしてください。) まあ具体例を挙げるならこんな感じ。 (機械語データ) (アセンブリ言語) b8 57 61 6b 61 mov $0x616b6157,%eax 53 push %ebx 50 push %eax ba 04 00 00 00 mov $0x4,%edx bb 01 00 00 00 mov $0x1,%ebx b8 04 00 00 00 mov $0x4,%eax 89 e1 mov %esp,%ecx cd 80 int $0x80 58 pop %eax 31 c0 xor %eax,%eax 5b pop %ebx c3 ret 人間がCPUを直接動かすプログラムを書こうとするとき、アセンブリ言語を使って書きます(右側の部分)。 mov $0x616b6157,%eax push %ebx push %eax mov $0x4,%edx mov $0x1,%ebx mov $0x4,%eax mov %esp,%ecx int $0x80 pop %eax xor %eax,%eax pop %ebx ret そしてこれをアセンブルすると、1対1対応した機械語のデータ列が出来ます。 それが b8 57 61 6b 61 53 50 ba 04 00 00 00 bb 01 00 00 00 b8 04 00 00 00 89 e1 cd 80 58 31 c0 5b c3 この部分。 機械語には改行なんてありませんから、実際は一連の b8 57 61 6b 61 53 50 ba 04 00 00 00 bb 01 00 00 00 b8 04 00 00 00 89 e1 cd 80 58 31 c0 5b c3 と言うデータ列になります。 これをCPUが実行していきます。 相当熟練した人で無ければ、このデータ列を見るだけでプログラム構造を理解する、というわけに行きません。 なので、人間が機械語レベルでプログラミングする際には、アセンブリ言語を使います。 ※この回答のプログラムはこちらから引用しました。 >31バイトでつくるアセンブラプログラミング アセンブラ短歌の世界 >https://book.mynavi.jp/support/pc/4946/c01_assembra.pdf で、機械語データは、なぜ、0と 1だけではないのでしょうか?教えていただけないでしょうか?すみません。

  • C言語次のステップ

    C言語について一通り勉強しました。 (入門的な本に書いてあるような事柄) 次に勉強するといいことを教えてください。 それから、入門レベルよりひとつ上の内容の書籍があれば教えてください。 ポインタ、アセンブラ、 マルチスレッド、マルチプロセス、といった ちょっと深いテーマみたいなのも教えてください。 (ここにあげたのもいまいちわかってませんが、、)

  • Z80のアセンブリをアセンブルしたいのですが。。。

    Z80のアセンブリをアセンブルしたいのですが。。。 いつもお世話になっております。 小生、只今、WindowsXPSP3上でZ-Vision6.42付録版を用いて、Z80のアセンブリを勉強しています。 今回質問させて頂きたいのは、下記に記述させて頂くコードがZ-Visionではアセンブルできません。 -----ソース----- OBJ $0100,$01FF FRE $1000,$1FFF CALL TEST END TEST: LD HL,1000 LD A,$FF LD B,32 L_TEST LD (HL),A INC HL DEC B JP NZ,L_TEST RET ---------- 上記に記述させて頂いたコードをアセンブルすると、以下の様なエラーが出ます -----エラー内容----- - Can not open message file. -Pass-1 -Pass-2 -Pass-3 C:\PROGRAM FILES\ZVW6\Z80PROGRAM\TEST.ASM 1 :Asm Error: 4013 C:\PROGRAM FILES\ZVW6\Z80PROGRAM\TEST.ASM 2 :Asm Error: 4013 C:\PROGRAM FILES\ZVW6\Z80PROGRAM\TEST.ASM 9 :Asm Error: 4011 C:\PROGRAM FILES\ZVW6\Z80PROGRAM\TEST.ASM 11 :Asm Error: 4013 C:\PROGRAM FILES\ZVW6\Z80PROGRAM\TEST.ASM 15 :Asm Error: 4011 -Warnings : 0- -Errors : 5- ---------- そこで、大変申し訳ないのですが、このコードをアセンブルできるフリーソフトなどご教示頂ければ、幸いです。 お忙しい中、大変申し訳ございませんが、以上、先輩方ご教示宜しくお願い致します。

  • Windowsのプログラムを作成するのに始め易い言語

    私は今までにWindowsのプログラムを作ったことがなく、 Windowsのプログラムを作成してみようと思うのですが、 どの言語のプログラムが覚えやすい/使いやすいでしょうか? 一応Windows以外の言語では以下の言語を扱えます ※独学なので、完全には覚え切れていません HTML / CSS / Javascript / perl5 / php4 / php5 / XHTML / Ajax? 身近にアセンブリ?アセンブラ?どっちかわかりませんが、 そういう言葉を耳にするのですが、どういう事なのでしょうか? 断片的なことしか聞いてないし検索してみても、明白な説明?の あるサイトも見つからないので、もし知っている方がいらっしゃれば そちらの方も聞いてみたいです

  • アセンブラが実行しません

    パソコン初心者です。 これからアセンブリ言語を学ぼうと思っています。 アセンブラとしてNASMをDドライブにダウンロードしました。 環境変数の設定でPATHにNASMをダウンロードしたディレクトリを追加しました。 試しに、アセンブリの簡単なプログラムを実行しようとしましたが、 「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」と表示されます。 これはどういうことでしょうか? どうすれば、アセンブラが実行できるのか教えてください。 お願いします。