2015-02-05 2 views
-1

델파이에서 산술 시프트를 올바르게 수행하려고합니다. 나는 그것을 작동시키지 못합니다, 그것은 잘못된 대답을 계속 제공합니다.논리 시프트 대신 오른쪽으로 산술 시프트

내 코드는 다음과 같습니다. offset1024가 설정되고 시프트 오른쪽 32로 설정

lValue := offset; 
    asm 
    mov cl,32 
    sar lValue,cl 
    end; 
    hgh := lValue and $FFFFFFFF; 

, hgh 0는 같아야한다. 내 코드는 hgh = 1024입니다. I 정확하게 명령 만 31 (5 비트 변위 값)까지의 이동을 지원하는 경우 호출

+3

동일한 31 비트만큼 시프트한다. –

+0

@ 500-InternalServerError - 어떻게하면 더 효과적일까요? –

+0

@ 500-InternalServerError의 의견은 절대적으로 옳습니다 : "Intel 286 프로세서로 시작하는 다른 모든 IA-32 프로세서는 5 비트로 시프트 수를 마스크하여 최대 개수는 31이됩니다." 파스칼과 BASM을 섞어 쓰는 것에는 아무런 문제가 없지만 어셈블러에 대해서는 매우 신중해야합니다. –

답변

0

은 조건부로 큰 번호 32