процедура, которая меняет местами байты (младший / высокий) переменной Word

У меня есть эта процедура, которая меняет местами байты (младший / старший) переменной Word (она делает то же самое, что и функция System.Swap). Процедура работает, когда оптимизация компилятора выключена, но не когда она включена. Может ли кто-нибудь помочь мне с этим?

procedure SwapWord(VAR TwoBytes: word);   
asm
  Mov EBX, TwoBytes
  Mov AX, [EBX]
  XCHG AL,AH
  Mov [EBX], AX
end;
7
задан PhiS 17 August 2011 в 08:31
поделиться