2014-06-29 3 views
-5

Я запутался, что означает SHR,Что SHR на ASM значит

SHR CL, 1 

Первоначально CL был 0x2A после того, как он стал SHR 0x15.

SHR 42, 1 = 21

+0

Что делает ассемблер, связанный с Javascript? –

+0

Я просто пытаюсь преобразовать код в javascript из сборки. – majidarif

+1

Почему вы не смотрите в документации на какой набор инструкций вы используете? –

ответ

4

Проще говоря, сдвиг вправо. Второй операнд определяет количество бит, которое должно быть сдвинуто вправо. Итак:

CL = 42 (в шестнадцатеричном виде) = 0100 0010 (двоичный)

Сдвиг вправо один раз, все биты идут правильно. Самый младший значащий бит (самый правый) относится к флагом переноса, а нуль добавляется к самому старшему значащему биту (слева). Таким образом, значение становится следующим:

0010 0001 (21 в шестнадцатеричном виде) ->, а самый правый 0 - флаг переноса.

+0

Я не знаю, почему люди всегда спрашивают о переносе, когда почти все языки имеют оператор сдвига/инструкции, и они должны сталкиваться с этим при изучении языка –

3

Посмотрите на оба значения в двоичном представлении, а не в виде шестнадцатеричных чисел, что делает его гораздо более очевидным, что делает команда. Дополнительные пункты для замечения разного рисунка при делении первого числа на второе число.

+0

похоже на разделение. – majidarif

+1

может использоваться как таковой, правильно. Но это всего лишь побочный эффект, результат того, что компьютер работает с двоичными числами. Примерно так же, как и побочный эффект, поскольку удаление зацикливающей цифры из десятичного числа является (целочисленным) деление на десять. –