田舎の組み込みプログラマーがわざわざ趣味でも色々開発してみようとあがく様を綴るブログです。
DMM.makeのクリエイターズマーケットに出品しています。

構造化アセンブラもカテゴリーに ― 2015年09月09日

なんだか

構造化アセンブラについてもっと語りたくなってしまったのでカテゴリーを追加してみました。

先日の"MEM$_BIT_RESET"マクロは、よく考えてみるとリロケータブル領域のビットには使えませんし、通常の2000hより上位アドレスにある SFRのビットは".btequ"で定義されているのでこれまた使えずと、どや顔で紹介した割にはほとんどCAN部分専用という感じでした。

そこで

今回はもう少し使えそうな記述をご紹介します。

; 定義部
CAN0_MODE        .define    "[ c0str ].b & 11b"
CAN_OPERATION    .equ    00b
CAN_RESET        .equ    01b
CAN_HALT         .equ    10b

; 実体記述部
    for CAN0_MODE != CAN_OPERATION
    next

; 展開結果  
..fr0009:
    MOV.B    c0str,R0L
    AND.B    #11b,R0L
    CMP.B    #CAN_OPERATION,R0L
    JEQ    ..fr000b
    JMP    ..fr0009
..fr000b:

CANモジュールのモードがオペレーションモードに切り替わるのをfor文で待つ処理です。
条件は"=="も使えますし、do文やif文もありです。

こんなのはCでは当たり前の記述じゃないかと思われるかもしれませんが、アセンブラにこの記述を織り交ぜられるところがいいんです。

とまぁ、こんな感じで時々構造化アセンブラをごり押ししていこうと思います。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
日本標準時子午線の都市名をかたかなで

コメント:

トラックバック

このエントリのトラックバックURL: http://trident.asablo.jp/blog/2015/09/09/7785665/tb