2012-03-31 9 views
4

レジスタでNASMのビットシフトをどうやって行いますか?私はマニュアルを読むだけで、これらの演算子に言及しているようです。>>,< <です。私がそれらを使用しようとすると、NASMはスカラー値で動作するシフト演算子について不平を言う。スカラー値が何であるかを説明し、使用方法の例を挙げることができますか>>および< <また、shrまたはshlの演算子があると思いました。彼らが存在する場合は、それらを使用する方法の例を挙げることができますか?あなたの時間をありがとう。NASMシフト演算子

答えて

4

<<および>>は整数定数でのみ使用します。これは「スカラー値」の意味です。 shlまたはshr命令を使用してレジスタ内の値をシフトすることができます。それらはレジスタの左または右のそれぞれのビット数をシフトするために使用されます。

この例の最初の行はaxが16秒のラインを掛けると同じである右整数除算によって同じである2ビットでbxの値をシフトする、4ビットを左に値をシフト4.

shl ax, 4 
shr bx, 2 

また、定数の代わりに、シフトするビット数を示すためにclを使用することができます。これらおよび関連する手順の詳細については、this pageを参照してください。

4

ughoavgfhwの回答にピギーバック... <<>>を使用するには、定数に直接それらを使用する:

MOV EAX, 1 << 2 ; Puts 4 into EAX 
MOV EAX, 2 << 2 ; Puts 8 into EAX 
MOV EAX, 8 >> 1 ; Puts 4 into EAX 
関連する問題