Я запутался, что означает SHR,Что SHR на ASM значит
SHR CL, 1
Первоначально CL был 0x2A
после того, как он стал SHR 0x15
.
SHR 42, 1 = 21
Я запутался, что означает SHR,Что SHR на ASM значит
SHR CL, 1
Первоначально CL был 0x2A
после того, как он стал SHR 0x15
.
SHR 42, 1 = 21
Проще говоря, сдвиг вправо. Второй операнд определяет количество бит, которое должно быть сдвинуто вправо. Итак:
CL = 42 (в шестнадцатеричном виде) = 0100 0010 (двоичный)
Сдвиг вправо один раз, все биты идут правильно. Самый младший значащий бит (самый правый) относится к флагом переноса, а нуль добавляется к самому старшему значащему биту (слева). Таким образом, значение становится следующим:
0010 0001 (21 в шестнадцатеричном виде) ->, а самый правый 0 - флаг переноса.
Я не знаю, почему люди всегда спрашивают о переносе, когда почти все языки имеют оператор сдвига/инструкции, и они должны сталкиваться с этим при изучении языка –
Посмотрите на оба значения в двоичном представлении, а не в виде шестнадцатеричных чисел, что делает его гораздо более очевидным, что делает команда. Дополнительные пункты для замечения разного рисунка при делении первого числа на второе число.
похоже на разделение. – majidarif
может использоваться как таковой, правильно. Но это всего лишь побочный эффект, результат того, что компьютер работает с двоичными числами. Примерно так же, как и побочный эффект, поскольку удаление зацикливающей цифры из десятичного числа является (целочисленным) деление на десять. –
Что делает ассемблер, связанный с Javascript? –
Я просто пытаюсь преобразовать код в javascript из сборки. – majidarif
Почему вы не смотрите в документации на какой набор инструкций вы используете? –