Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   ЧАВО - Частые Вопросы и Ответы    >>    shifterr
   
 
 ERR. Почему не работают сдвиги для LongInt   Sly Golovanov 27.12.1997

Как исправить глюк BP7.0 в процедурах побитового сдвига.


 
 

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)