Pascal FAQ created by SLY Golovanov, 2:5020/278.13
(slightly corrected by Valery Votintsev 2:5021/22)
==============================================================================
Q:> Глючат процедуры побитового сдвига shl, shr в применении к LongInt
A: Известный баг.
Можно поставить фикс BP7.0 -> BP7.01, или же использовать свои процедуры.
Вот пример (работают на 386+):
function LongShl(A: LongInt; B: Byte): LongInt; assembler;
asm
mov cl,[B]
db $66 {код опеpаций с 32-битными pегистpами}
mov ax,word ptr [A]
db $66
shl ax,cl
db $66
push ax
pop ax
pop dx
end;
function LongShr(A: LongInt; B: Byte): LongInt; assembler;
asm
mov cl,[B]
db $66
mov ax,word ptr [A]
db $66
shr ax,cl
db $66
push ax
pop ax
pop dx
end;
---
* Origin: (2:5020/794.13)
|