2016-10-06 5 views
0

私はASCIIの文字列を対応する64ビットの2の補数の値に変換する関数の実装に取り​​組んでいます。アセンブリのASCIIと2の補数

%のRDIのようなレジスタは、文字列がnullで終わるだろう

を変換する文字列の最初のバイトのアドレスである引数のchar * sに含まれています。 %rsiのようなレジスタには、変換結果を格納するアドレスlong * xが含まれます。

私はどこから始めるべきか分かりません。 ASCIIを2の補数に変換するにはどうすればよいですか?私は見てきましたが、私は0x0Fを利用すべきであることを知りました。どのように使用できますか?私はどこから始めるべきですか?

+0

このサイトの仕組みについては、[ツアー](http://stackoverflow.com/tour)をご覧ください。このタイプの質問は、特定のプログラミング上の問題ではないため、適切ではありません。 – wallyk

+0

MOVSXを使用して、MOVZXバイトから符号付きの値を生成し、符号なしの値を生成します。 –

答えて

0

ASCII文字を2の補数に変換するには、ANDのASCII番号を0x0Fとする必要があります。 たとえば、ASCII文字7%rsiに読み込みます。レジスタ%rdi0x0Fを保持します。

7は、0011 0111に相当します。

0x0Fは、0000 1111に相当します。

ANDの結果は、0000 0111であり、これはバイナリで7です。

これが役に立った!