出力するために整数を文字列に変換しようとしています。 しかし、整数が128ビットである間に、2つのレジスタでx86_64とNASM
アセンブリを使用しています。 だから私はそれを出力する方法を知らない。 ありがとう!アセンブリ内の128ビット整数の文字列への変換
答えて
以下は、符号なし整数に使用できる(アセンブリスタイルの)アルゴリズムです。数n
で起動します。あなたはそれがどのように動作するかを理解するように、手動でwetwareて良いスタートをする必要があります
start:
if n is non-zero then goto nonZeroNum.
output '0'.
return.
nonZeroNum:
set digitCount to zero.
numLoop:
get n modulo 10 and push it onto the stack.
increment digitCount.
divide n by 10 (integer division).
if n is non-zero then goto numLoop.
digitLoop:
pop digit.
convert number to character (eg, adding 48 for ASCII).
output that character.
decrement digitCount.
if digitCount is non-zero then goto digitLoop.
が、私はそれを実行することをお勧めしたいです。
次に、擬似コードの機能を実行するアセンブリ命令を実行するだけで済みます。それは1対1マッピングである可能性が高いのであまり面倒ではありません。
私は方法を知っていますが、分ける方法はわかりません.... nは2つのレジスタにありますが、命令は64b/64bのみを扱います(わかりません) – CXWorks
分裂の代わりに繰り返し減算。それはどんなビット幅でも簡単です。 ) – Jester
128ビット整数が符号なしか符号付きかに応じて、 'DIV'(符号なし)または' IDIV'(符号付き)命令を使用してください。 'RDX'レジスタに上位64ビットを置き、命令の前に' RAX'レジスタの下位64ビットを置きます。そして、 'RBX'に10を格納すると、' DIV RBX'命令は10で割って商を 'RAX'に、残りを' RDX'(元の内容を書き込む)に入れます。 – pcarter
- 1. 128ビット整数6
- 2. PHP:64ビット整数を文字列に変換する
- 3. C#文字列から整数への変換の問題
- 4. 64bit整数から文字列への変換
- 5. 変換文字列は、整数に文字列内の数字を分離し、変数
- 6. 128ビット整数とウィンドウ上のc?
- 7. 文字列を整数に変換
- 8. 数字の文字配列を整数に変換する
- 9. 10進数から整数へのビット単位の変換
- 10. Fortranの文字から整数への変換
- 11. 整数へのJ2ME 16進文字列
- 12. 整数文字列値へのハッシュ
- 13. 文字列内の整数の除算
- 14. 10進文字列で表される64ビット整数を16進文字列に変換する方法
- 15. PHP - 文字列を64ビットに変換
- 16. C++での文字列変換/整数文字列連結の整数 - よりコンパクトなソリューション?
- 17. 文字列「M」から「整数」への変換が無効です
- 18. 文字列 "ACECATN000001"から "整数"への変換が無効です
- 19. Int32から24ビット符号付き整数への変換
- 20. 整数 - Javaでの文字列変換の問題
- 21. 文字列をそのascii値の整数に変換する
- 22. 数字の文字列を任意の整数の形式に変換する
- 23. ダブルエスケープ文字列への変換
- 24. 文字列からintへの変換
- 25. 文字列からバイトへの変換
- 26. Java:inetaddressから文字列への変換
- 27. 文字列を整数に変換し、2つの数字のpersentageを取得
- 28. 単語の整数表現を文字列に変換する
- 29. 文字列を整数のセクションに変換するC++
- 30. Schemeの文字列を整数に変換する
私はCの関数を使用することはできませんし、アセンブリでこのlong intを分割する方法がわかりません – CXWorks
この質問は既に議論されています、[ここをクリック](http://stackoverflow.com/questions/13523530/printing-an) -int-or-int-to-string)を使用します。あなたの解決策ではありませんか? –