Как известно, в Паскале 6 логических операторов: not, and, or, xor, shl, shr. В асме 6502 есть ещё
две: rol, ror (roll left/right): циклический сдвиг через флаг Carry [это мнемоника ассеблера NES - может на Асме под интел какие-то другие операторы(по-моему RCL, RCR)]. Так вот, если в коде, скажем, распаковки встречаются эти две команды. А в операторах Паскаля их нет (наверное, потому что тут задействован флаг Carry). Тогда как же писать распаковщик?
Аналогично и с условием BCC: Branch if Carry Clear. Если это условие встречается в коде как проверить флаг уже в своей программе на языке высокого уровня?
Неужели только в инлайне? Это получается новый язык придётся выучить! Очень не хочется...
Pascal и Carry Flag
Страница: 1
Сообщений 1 страница 3 из 3
Поделиться12006-07-27 23:12:12
Поделиться22006-07-28 01:02:57
Я с таким сталкивался, написал процедурку =)
Procedure ROL(Var A: Byte; Var CarryFlag: Boolean);
Var B: Boolean;
begin
B := CarryFlag;
CarryFlag := Boolean(A shr 7);
A := A shl 1;
A := A or Byte(B);
end;
Поделиться32006-07-28 02:56:40
О! Зашибись =) тут и BCC тоже снимается =)
Страница: 1