-1
델파이에서 산술 시프트를 올바르게 수행하려고합니다. 나는 그것을 작동시키지 못합니다, 그것은 잘못된 대답을 계속 제공합니다.논리 시프트 대신 오른쪽으로 산술 시프트
내 코드는 다음과 같습니다. offset
1024
가 설정되고 시프트 오른쪽 32
로 설정
lValue := offset;
asm
mov cl,32
sar lValue,cl
end;
hgh := lValue and $FFFFFFFF;
,
hgh
0
는 같아야한다. 내 코드는
hgh = 1024
입니다. I 정확하게 명령 만 31 (5 비트 변위 값)까지의 이동을 지원하는 경우 호출
동일한 31 비트만큼 시프트한다. –
@ 500-InternalServerError - 어떻게하면 더 효과적일까요? –
@ 500-InternalServerError의 의견은 절대적으로 옳습니다 : "Intel 286 프로세서로 시작하는 다른 모든 IA-32 프로세서는 5 비트로 시프트 수를 마스크하여 최대 개수는 31이됩니다." 파스칼과 BASM을 섞어 쓰는 것에는 아무런 문제가 없지만 어셈블러에 대해서는 매우 신중해야합니다. –