UMEHOSHI ITA TOP PAGE
アセンブラページ(制御ボード「UMEHOSHI ITA」用)
UMEHOSHI ITA基板で使っている制御チップのPIC32MX270F256B(MIPS32対応)用アセンブブラです。
#include <xc.h> // test.S (USBへhelloの文字列を出力するプログラム例です。この内容を自由に書き換えて、アセンブルすることができます。) .set noreorder #アセンブラに命令の順序を自動変更させない。 .section test_main,address(0x80005000),code .ent test_main test_main: ADDIU sp,sp,-24 # 以下で使う24byteまでの退避サイスをスタックに作る。 SW ra,20(sp) # 現在の関数の戻り番地をスタックに退避 SW fp,16(sp) # 呼び出し前の関数のフレームポインタをスタックに退避 MOVE fp,sp # 現在の関数のフレームポインタをこの関数用に更新 NOP LUI v0,0xa000 # 以下3行で_PTR_HANDLERS[_IDX_API_SEND_STRING]の内容をv0に設定する ORI v0,v0,0x41a4 LW v0,0(v0) LUI v1,%hi(.L_STR_HELLO) # v0の関数の引数を準備 ADDIU a0,v1,%lo(.L_STR_HELLO) # v0の関数の引数をa0レジスタに設定 JALR v0 # Raに戻り値を設置してv0の関数を呼び出す。(ここで、hello文字列出力の登録が行われる) NOP MOVE sp,fp # フレームポインタで退避前でspを退避前に戻す。 LW ra,20(sp) # 現在の関数の戻り番地をスタックから復元 LW fp,16(sp) # この関数の呼び出し前のフレームポインタをスタックから復元 JR ra # この関数の呼び出し後に移動(リターンに相当する) ADDIU sp,sp,24 # この関数の呼び出し前のスタックポインタに戻る .end test_main .section .L_STR_HELLO,address(0x80005054),code .align 2 .L_STR_HELLO: .ascii "hello\r\n\x00"
上記で編集したアセンブリソースを、左のボタンで「アッセンブル」できます。
番地から実行する
UME専用Hexコマンド
を、 最後に追加埋め込みする場合にチェックする==>
上記で生成した[UME専用Hexコマンド]のテキストを コピー(
CTRL+A
CTRL+C
)して
UMEHOSHI ITA
へ転送して動かすことができます。
UMEHOSHI ITAへ転送は、次の手法などで可能です。
「Tera Term」のようなターミナルソフトで、上記アッセンブル結果のコピー貼り付けで転送し、実行する。
上記アッセンブル結果をファイル化して、
「umehoshiEdit」開発ツールで開いて転送し、実行する。
(ファイル化する場合のファイル拡張子を
.hex
にすることで、umehoshiEditで開くことができます。)
上記アッセンブル結果をファイル化して、をれを
Pythonなどで作った転送用プログラムで転送し、実行する。
(0x80005000番地から実行させる場合、上記の最後に「R00800050000061」のコードを追加追加するとよいでしょう。)