やまものブログ

メモ書きブログです (^_^;A

ARM アセンブラ 16進数表示ルーチン

Hellow World! 出力はあらかじめ決まった文字列の表示でした。今回は一歩進んで、レジスタ r0 の内容を 16進数表示するサブルーチンを作りました。

イメージ 1

レジスタ r0 に格納された情報を 4ビットずつシフトしながら文字列に変換して write システムコールで標準出力します。文字列の格納場所としてはスタックを使いました。スタックの値を fp に保存した後、12バイト sp を進めることで領域を確保しています。なお、12バイトとしたのは、
12バイト = ”0x”(2B)+32ビット16進表示(8B)+"\n"(1B)+ヌル (1B)
という意味です。

確認には下記のコードを使いました。Saturating arithmeticの動作を確認しました。
イメージ 2

r1 と r2 に格納した同じ2つの値を add  した結果と qadd  した結果を表示しました。
イメージ 3

qadd  では符号付き整数の最大値にとどめられているのが確認できました