2012-03-31 77 views
4

你會如何在NASM上做一些轉變?我閱讀手冊,似乎只提到這些運營商>>,< <。當我嘗試使用它們時,NASM抱怨工作在標量值上的移位操作符。你能解釋一下標量值是什麼,並舉例說明如何使用>>< <。此外,我認爲有一個運營商shrshl運營商。如果它們確實存在,你可以舉一個如何使用它們的例子嗎?感謝您的時間。NASM轉移運營商

回答

4

<<>>僅用於整數常量。這就是「標量值」的含義。您可以使用shlshr指令移入寄存器中的值。它們用於分別向左或向右移位寄存器中的值,給定位數。

本示例中的第一行將ax的值左移4位,與將其乘以16相同。第二行將bx中的值右移2位,這與整數除以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