-1
Я пытаюсь выполнить арифметический сдвиг прямо в Delphi. Я не могу заставить его работать, но он продолжает давать неправильные ответы.Арифметический сдвиг вправо, а не логический сдвиг вправо
Это мой код;
lValue := offset;
asm
mov cl,32
sar lValue,cl
end;
hgh := lValue and $FFFFFFFF;
offset
Когда установлен в 1024
и сдвиг вправо устанавливается в 32
, hgh
должна равняться 0
. В моем коде hgh = 1024
.
Если я правильно помню, инструкция поддерживает только изменения до 31 (значение 5-битного смещения). –
@ 500-InternalServerError - как бы я мог сделать больше? –
@ Замечание 500-InternalServerError абсолютно верно: «... все другие процессоры IA-32 (начиная с процессора Intel 286) маскируют счетчик сдвига до 5 бит, в результате чего максимальный счет 31." Нет ничего плохого в смешивании Pascal и BASM, но вы должны быть очень осторожны с ассемблером (как обычно). –