というエラーが出ます。ORGとかいうのを使うのでしょうか? アセンブラ歴は数日の初心者です。よろしくお願いします。
アセンブラにもIDE(統合環境)によってはマクロ命令・擬似命令・アセンブル指示命令が存在します
例えば、
INCLUDE C.ASM
と言う文を入れると
他のファイルをインクルードできたりします
ORGはプログラムがアドレスのどこから始まるかを指定する時に使います
http://member.nifty.ne.jp/nagisaelec/na80form.html
@nifty:@homepage:移転のお知らせ
参考
さがしてて、あれっとおもったんですが
CCSのCコンパイラだとできるんですけど。
アセンブラだとできないんじゃなかったでしたっけ。ORGは割りこみの時なんで違うと思います。
みなさん、1ファイルにずらーーーっと書いているのかなぁ? (^^;
http://www.hatena.ne.jp/1091338800#
アセンブラソースの分割はどうやってやるのでしょうか? 昨日、PICから発光ダイオードの点滅のプログラム(A.asm)を書いて、動きました。喜んでおります(^^/。で、コードが長.. - 人力検索はてな
プログラムの分割を考える前に,同一プログラムの中でそれおぞれの処理をブロック毎に追加して書いていって同でしょうか.そうするとアセンブラのプログラムに慣れてきて,今書いている事がどういうことか,またORGの意味も良く分かり,サブルーチンのCallも苦にならなくなります.それまでは簡単なプログラム順番に追加していってはどうでしょうか
別ファイルのサブルーチンのコールがやりたいのです。
URLはダミーです
>プロジェクトに追加して、増やしてく方法はないですか?
プロジェクトに直接追加した場合は、共通の変数などを互いにさっき説明した INCLUDE指示命令でインクルードしてやらないとラベルが見つからないと言うエラーが出ます
プロジェクトに追加することで、1つ1つのファイルをコンパイルするのですが、変数についてはINCLUDEでヘッダファイルを読み込んでやらないといけないのはC言語と同じようです
アセンブラの場合はインクルードファイルを INCと言う名前にすることが多いようですね
プロジェクトに追加を選んだ時に、アセンブラファイルがない場合は、ファイルの種類を選ぶとアセンブラが出てくる場合がありますがいかがでしょうか?
なるほど。なるほど。ありがとうございます。
けど、エラーはまだおさまりません・・・。
http://www5b.biglobe.ne.jp/~kuma3/html/homemade/pic_soft.html
PICを使った電子工作2(製作編)
MPLABではそれほどおおきなプログラムは組んでいないので自分で別ファイルのサブルーチンをコールしたことはないのですが、ここのURLで若干触れられています。
Skipping link step. The project contains no linker script.というエラーがでます。うーむ。
http://www.hatena.ne.jp/1091338800
アセンブラソースの分割はどうやってやるのでしょうか? 昨日、PICから発光ダイオードの点滅のプログラム(A.asm)を書いて、動きました。喜んでおります(^^/。で、コードが長.. - 人力検索はてな
アセンブラと言われても・・・CPU により、ソフトメーカにより千差万別なので、一般的な話ですが・・・
プロジェクト云々と言う話が出てるので、分割アセンブリ可能なソフトだと思いますが、やり方は二つあります。
一つは既出の include 文を使う方法。これは単にソースを分割してるだけなので、たいていのアセンブラで可能です。ただし、include 文(ないし同様のもの)をサポートしてる必要があります。
もう一つは、サブルーティン側でその名前を global とか export とか public 宣言します(どういう表記かはアセンブラによって異なりますので、具体的なソフト名がわからないと何も言えない)。
一方、呼び出す側でもその名前を、import とか global とか public とか宣言します。
どちらの宣言についても、code や data 等の同じ名称のセグメント内で宣言しないとエラーが出るのが一般的です。
具体的なことは MPLAB だけでどんなアセンブラかわかる人にお任せします(笑
うーん。アセンブラ自体がよくわかってないので…。(^^;
http://www.microchip.co.jp/tools.html
マイクロチップ・テクノロジー・ジャパン 開発ツール
MPLAB ってこれですか?
ざっとヘルプを見たところでは、サブルーティンの宣言側は global でサブルーティン名を公開し、使う側は extern でその名前を宣言してから call する、だと思います。
それです。それです。
ヘルプはどこにありますか?
http://www7.plala.or.jp/keny01/masm/pre/01-02.html
NOT_FOUND 404
分割可能ですね。リンカーを使います
---
プログラムを作っていると、長すぎるファイルを分割したい場合があります。そのような場合には、分割アセンブルという方法を使います。ソースを分割してアセンブルして、リンクでオブジェクトファイルを統合します。
おー。できるという事まではわかりました。
http://support.microsoft.com/default.aspx?scid=kb;JA;73407
MASM から C 関数を呼び出すために、 PROTO と呼び出すを使用します。
(MASMしか使ったことが無いのですが)
MASMならENTRNというのを使います。
URLの中の「サンプル コード 1」で丁度
printf
等をENTRNしてます。
C言語のexternと同じです。
うーむ。うまくいかない…。
先ず、ソースコード全体を、主プログラムと副プログラム(サブプロシージャ)に上手に整理分割し、見通しを良くしましょう。機能単位で上手に分割して、それぞれ別のソースファイルに分割すると良いでしょう。各ファイルに共通の定義ヘッダ、共通変数などは、別ファイルにして、それぞれのソースファイルからインクルードしましょう。変数とプロシージャのパブリック宣言なども忘れずに。リンカーがオブジェクトファイルをリンクするときに、シンボル情報を元に、実行ファイルを正しく生成してくれるはずです。質問者の開発環境が確認できず、不適切な点もあり、済みません。アセンブリ歴25年の初心者ですが、ご不明な点などあれば、私で宜しければ追記しますので、宜しくお願い申し上げます。<m(__)m>
うぉっ。25年ですか…。すごい…。
externとpublicというのを使えばよさそうなのですが
環境が違うと記述が違うのですね…。
まだうまくいってません…。(^^;
http://www.msn.co.jp/home.armx
MSN Japan
URLはダミーです
基本は
メインのソースファイル(そのサブルーチンを呼んでいるファイル)に
外部参照(extern)命令をおき
サブルーチンファイルに外部公開命令(public)をおきます
例としてはMASMの場合ですが
******************************************************************
メインのソース
extern sub_routine:near
CODEsegment
mainproc
call sub_routine
mainendp
CODEends
******************************************************************
サブルーチンソース
public sub_routine
CODEsegment
sub_routineproc
...........
sub_routineendp
CODEends
*******************************************************************
お使いのアセンブラにもこれと同じような命令があるはずです
segment と ends はセグメント(CODE)指定命令です
参考になればいいですが・・・
うーん。同様の機能を行う記述がわからないです。(X_X)
このPDFをダウンロードしてみました。
PUBLICの代わりにMPASMではGLOBAL宣言が必要なようです。
このPDFがMPASMのドキュメントでリンカーとライブラリアンのドキュメントにもなっているようです。
このPDFをダウンされることをお勧めします。頑張ってください。
うーん。リンカースクリプトが無いと怒られてしまいます…。
分割アセンブルはハードルが高いのかなぁ。
http://www.apple.com/jp/powermac/
アップル - Mac Pro
3回目なのではじかれてしまいました
別IDで登録しますことをご了承ください。
そこまで行けばあともう少しです!
アセンブルエラーは無くなったわけです^^
現在の状態は、その次、リンクの時点でつまずいているのです。
ここで、アセンブラの原理を簡単に説明します。(ご存知でしたらごめんなさい)
まず、ソースをアセンブラに掛けますと、ソースに問題が無ければ
ソースの数だけオブジェクトファイルが出来ます。
この状態は実行できる状態ではなく、ただバイナリのある意味、データです。
その、各々のデーターを結合し、シンボルラベルを解読し、一つにまとめ、
意味あるコードに変換すのがリンカーなのです。
IDEはそれを自動で順々こなしてくれるのです。
ええと、milknekoさんがIDEをインストールしたディレクトリの中に
MCHIP_Tools¥LKRというディレクトリがあるはずです。
その中にmilknekoさんがターゲットにしているデバイス用の
リンカースクリプトファイルがあるのでそれをプロジェクトの
Linker Scriptsにaddすれば。通ると思います^^
環境を入れて実際に試したので間違いないと思います^^
頑張って下さい。
おぉ!! リンクが通りました。
ただ、デバッグ実行するとどこのブレークポイントにもとまりませんでした。
とりあえず、リンクは通ったので、この質問はクローズします。
みなさん、ありがとうございました!!
プロジェクトに追加して、増やしてく方法はないですか?