64ビットWindows上でアセンブリ言語によるプログラミングをする方法

このQ&Aのポイント
  • 64ビット版のWindows上でアセンブリ言語によるプログラミングを行う方法について調査しました。アセンブリ言語はC言語と組み合わせて組込みソフトウェア開発を学ぶ際にも重要です。
  • 64ビット環境でも動作するアセンブラを探すことが難しいですが、いくつかの方法があります。ネット上の情報を参考にすると、環境設定が必要であることがわかりました。
  • アセンブリ言語に関する知識がゼロでも大丈夫です。インストールすべきソフトウェアや環境設定方法を説明します。また、簡単なサンプルプログラムも提示します。アセンブリ言語によるプログラミングを始めてみましょう。
回答を見る
  • ベストアンサー

64ビットWindows上でアセンブリ言語

こんにちは。 現在、OSは現在、64ビット版のWindows7を使っています。 このWindows7上で、アセンブリ言語によるプログラミングを行いたいと思っています。 どうして今頃アセンブリ言語なのかといいますと、会社の研修で、C言語による組込みソフトウェア開発を学ぶ際に、アセンブリ言語も学習するらしいので、少し予習してみようと思いました。 そこで、64ビット環境でも動作するアセンブラを探してみたのですが、 なかなか見つからず、困っています。 ネット上の情報を頼りに色々と試したのですが、作成した実行ファイルをいざ実行しようとすると、「64ビット環境では動作しない」といった内容のメッセージが出たりして、 どうしても動作してくれませんでした。 64ビット版のWindows上で、アセンブリ言語によるプログラミングができている方がいらっしゃれば、どうやってできたのかを、是非教えて頂きたいです。 必要であれば、インストールすべきソフトウェアの一覧と、環境設定方法なども、簡単に説明して頂ければ、大変助かります。 あと、動作確認を行う簡単なサンプルプログラムも、提示して頂ければ大変助かります。 (なにせ、アセンブリ言語に関する知識がゼロなものですので。) では、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

マイコンの型番としてはMN101Eシリーズですね。 アマチュアが使わないマイコンなので簡単に試せるツールや資料がないですね。 資料は、ここにありますがユーザー登録が必要です。 http://www.semicon.panasonic.co.jp/jp/document/manual_micom_mn101e_1.html マイコン経験がないとこれだけ見ても訳が分かんないとおもいます。 なので、アセンブラ自体未経験なら仕様が簡単な情報処理技術者試験向けのアセンブラCASLIIで勉強されたほうが良いと思います。少なくともややこしいx86でやるよりは遥かに学習しやすいです。まぁ割り込みとかの勉強がこれだと出来ないのですが、それ以前に知らないことが多いのではないかと思います。 何らかのアセンブラ経験者なら30分で仕様を理解できるほどシンプルで簡単です。ゆえに初心者向きなのです。 「CASLII-目次」 http://masudahp.web.fc2.com/casl2/ 「tno2:CASL入門[目次]」 http://ww3.tiki.ne.jp/~tno2/shikaku/casl_content.htm 「C/C++/C#/Java/BasicプログラマのためのCASL II 入門講座」 http://www.officedaytime.com/dcasl2/pguide/ 動作確認用のシミュレータ 「CASLIIシミュレータのページ」 http://www.chiba-fjb.ac.jp/fjb_labo/casl/index.html 「情報処理推進機構:情報処理技術者試験センター:ダウンロード」Javaで動く。 http://www.jitec.jp/1_20casl2/casl2dl_002.html

MetalLover
質問者

お礼

zwiさん 大変ご丁寧な語説明をありがとうございます。 アセンブラCASLIIを、参考にさせて頂きます。 動作確認用のシミュレータまでご提示いただき、大変恐縮です。 本当にありがとうございました。

その他の回答 (3)

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.3

研修で使用する組み込みマイコンは何でしょうか? それが判らないと誰も回答できないと思います。 x64CPU用のアセンブラは紹介できますが、それだと予習にならないですよ。 x64CPUの命令セットと組み込みマイコンの命令セットでは 英語とロシア語くらいの違いがありますから。

MetalLover
質問者

お礼

御解答ありがとうございます。 >x64CPUの命令セットと組み込みマイコンの命令セットでは >英語とロシア語くらいの違いがありますから そうだったのですか。 全然知りませんでした。 >研修で使用する組み込みマイコンは何でしょうか? パナソニック製の、「AM1 Starter Kit」というマイコンです。 これをPCに接続して、アセンブリ言語やC言語でプログラミングするそうです。 引き続きよろしくお願い致します。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

組み込みマイコンで使うアセンブラとx86のアセンブラだとだいぶ違うのですが良いのでしょうか? 会社の研修で使うマイコンのアセンブラのほうが良いと思います。

MetalLover
質問者

お礼

御解答ありがとうございます。 アセンブラって、x86と組み込みマイコンでは、全然違うのですね。 それは知りませんでした。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

gcc をインストールすれば gas もいっしょにインストールされるとは思います.

MetalLover
質問者

お礼

御解答ありがとうございます。 gasって、x86CPU上で動作するアセンブラのようなのですね。 参考にさせて頂きます。

関連するQ&A

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

    アセンブリ言語がアセンブラ&実行出来るサイトを知らないでしょうか?また、アセンブリ言語のプログラムが載っているサイトを知らないでしょうか?教えて頂けると幸いです。

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

    現在電気工学科の学生です。アセンブリ言語の講義を受けているんですが、試験で単位が取れる自信がありません。。。全くわからないことだらけです。C言語に関してはほんの触りだけ勉強したことがありますが、アセンブラ言語については全くの素人です。演習問題があるんですが、色々本等で探しても見つかりませんでした・・・私の努力不足かもしれませんが、問題の解答と解説を教えて欲しいです。 問題は→メモリアドレス3000H~30FFHの内容(データ)を2000Hから始まるメモリアドレスにコピー(格納)するプログラムをアセンブリ言語で書いてください!それとこの問題には参考のためにアセンブリ言語の命令の例があるんですが LD A、(BC) LD A、(DE) LD A、(HL) って書いてあるんですが、このBCやDE,HLはどんな意味があるんでしょうか?初歩的なことばかりで申し訳ありませんが、ご教授よろしくお願いします。

  • Windows XP でのアセンブリ言語の勉強方法

    こんにちは、kasikomaと言います。 ■質問内容 はじめて読む486 (http://www.amazon.co.jp/exec/obidos/ASIN/4756102131/) を読んで(趣味で)アセンブリ言語の勉強をしようと思っています。 しかし、Windows XP でアセンブリ言語を勉強するための開発環境の作り方がわかりません。 アセンブリ言語を勉強するにはどのようにすれば良いのでしょうか。 解決策をご存知の方はいらっしゃいませんか。 ■使用環境 Windows XP Pro SP2 Pentium4 3.0GHz 現在の持っているソフトウェア: Visual C++ .NET Standard Version 2003

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

    今の時代にアセンブリ言語について質問することをを許しください。 今大学生ですが、どうしてもアセンブリを理解して基礎を固めたいのです。 質問は下に示すページです。 http://wisdom.sakura.ne.jp/programming/asm/assembly22.html ここの最初のdos画面について。 レジスタを使わずに、メモリ間転送を連続したストリング操作で行っていますが、この例だと最初に \"Kitty on your lap\" という文字をオフセット200から設定しています。 そして、この文字列をオフセット300にコピーするようプログラムを組んでいますが、レジスタCX(カウントレジスタ)に11を設定しています。 CXに設定された回数コピーを行うため、このプログラムでは11回のストリング操作によるコピーを行っていると理解していますが、ここで疑問なのは\"Kitty on your lap\"がどう考えても11文字ではありません。 そして、疑問が消えないまま実行してみると正確に動作しました。(コピーされました。) なぜ11を設定し、正確に動作するのかを教えていただけると幸いです。よろしくお願いいたします。

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

    今の時代にアセンブリ言語について質問することをを許しください。 今大学生ですが、どうしてもアセンブリを理解して基礎を固めたいのです。 質問は下に示すページです。 http://wisdom.sakura.ne.jp/programming/asm/assembly22.html ここの最初のdos画面について。 レジスタを使わずに、メモリ間転送を連続したストリング操作で行っていますが、この例だと最初に "Kitty on your lap" という文字をオフセット200から設定しています。 そして、この文字列をオフセット300にコピーするようプログラムを組んでいますが、レジスタCX(カウントレジスタ)に11を設定しています。 CXに設定された回数コピーを行うため、このプログラムでは11回のストリング操作によるコピーを行っていると理解していますが、ここで疑問なのは"Kitty on your lap"がどう考えても11文字ではありません。 そして、疑問が消えないまま実行してみると正確に動作しました。(コピーされました。) なぜ11を設定し、正確に動作するのかを教えていただけると幸いです。よろしくお願いいたします。

  • 32ビットWindows Vistaと64ビットWindows 7のテュアルブート

    10年も使用してきた現在のパソコンの動作がおかしくなったため、思いきってCPUがCore i7 860の新しいパソコンを購入しようと考えています。CドライブにWindows XP Professional32ビット版を、そして勉強のため、DドライブにWindows 7 Ultimate 64ビット版のデュアルブートにしたいと考えているのですが、ビット数の異なるデュアルブートは可能でしょうか。

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

    >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だけではないのでしょうか?教えていただけないでしょうか?すみません。

  • アセンブリ言語(PICプログラミング)に詳しい方

    PIC16F84Aを使い、アセンブリ言語でプログラミングした音をスピーカから流す、というような回路を 作っています。 http://homepage3.nifty.com/mitt/pic/pic5_11.html こちらが参考にしているページです。 こちらのページの真ん中あたり、『追加実験2 「ドレミファソラシド」を演奏』 のアセンブリプログラムをつかわさせていただいてます。 実際にこのプログラムを実行すると、「ドーレーミーファーソーラーシードー」という単調なメロディがスピーカから流れてきます。 この「ドレミファソラシド」を変えて、自分の好きなようにプログラミングしたいです。 そのためには音階も変えてディレイもかけないとだめなんですが、説明を読んでもあまり理解できません。 どなたか例を出して説明してくれませんか? 宜しくお願い致します。

  • アセンブリ言語でのプログラミングの質問です

    私は、現在情報工学科の学生です。現在学校でアセンブリの授業を受講しているのですが、どうしてもこの問題の掛け算の仕方のプログラミングがわかりません。私も自分でできる限り考え、教科書や書物を読んでみましたが掛け算というものが、どうすれば表せるのかがわからず、ここで質問しました。問題の回答と解説を教えてください、お願いします。 9000H番地の1バイトデータをA、9001H番地の1バイトデータをBとしたとき、AxBを16ビットで求め、下位1バイトを9002H番地、上位1バイトを9003H番地に格納するプログラムを作りなさい。またこのプログラムの実行時間をデータがA=65H、B=0AEHのときに計算しなさい。実行時間の計算では各命令の実行回数を示し、計算式を詳しく書くこと。

  • アセンブラ言語についてです。

    こんにちは。 現在大学3回生で就職活動をしております。 ESに得意科目の欄があり、大学の講義で習ったアセンブラ言語と書こうと思います。 アセンブラ言語は、将来どのような役に立つのでしょうか?? アセンブラ言語を学んでCやJAVAのプログラミングに生かせるのでしょうか?? 知識としては、基本情報技術者のCASLIIの問題が解ける程度です。 よろしく願いします。

専門家に質問してみよう