単一の ASCII 文字を印刷する方法を知っていると仮定します。したがって、整数から数字を抽出するアルゴリズムが必要ですa
-理解しやすく、拡張しやすいと思われるアルゴリズムを提供します(必ずしも最適ではありません)。
- 計算し
b := a%10
ます。b
あなたの番号の最後の桁です
- セット
a := a/10
(整数除算)
- 最初から最後から 2 番目の数字を取得するなどを繰り返し
a == 0
ます。
数字の値を取得したら、固定定数を追加してその ASCII 値を取得できます。これを使用して、対応する文字を出力できます。
上記により、数値を印刷できます。残念ながら、現時点では逆方向にしか印刷できません。これを修正するには、数字を右から左に配置できる文字列を割り当てます。すべてのlong intを保持するのに十分な大きさの文字列を割り当てることから始めます。次に、上記のアルゴリズムを変更して、桁数を追跡し、それに応じて文字列を割り当てます。
(もちろん、shrl $20, %eax
バイトを通常 MiB と呼ばれるものに変換するのは理にかなっているように思えます。規則はさまざまですが、通常は 1 MB = 10^6 バイト、1 MiB = 2^20 バイトだと思います。)