2
divオペランドを使用できない場合、整数の残りの部分を見つける方法については疑問に思っています。たとえば、アセンブリでdivを使用せずに余りを見つける方法
mov eax, 400 ; 400/4
shr eax, 2 ; Remainder : 0
mov eax, 397 ; 397/4
shr eax, 2 ; Remainder : 1
mov eax, 394 ; 394/4
shr eax, 2 ; Remainder : 2
シフトを変更すると、残りの部分が切り捨てられます。
div
(残りはedx
に格納されています)を使用せずに、残りの部分を把握するにはどうすればよいですか?
が、一般的な除数のために( 17のように)それほど簡単ではありません。 –
shr eaxの後に、その結果を保存します。その後、元のnumからそれを4倍にしてください。あなたの残りがあります。 –
ありがとうございました、私は正しい軌道に乗っていました。ちょうどそこに着くことはありませんでした。 :) とても有難い。 @PeteWilsonあなたが答えにあなたの返事を入れたいなら、私はそれを受け入れます。さもなければ私はちょうど答えを入れます。 Kerrek SBが説明してくれてありがとうございます。ビット操作部分について詳しく説明できますか? – StartingGroovy