2012-03-31 76 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