![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
способ получения в EAX, значение флага cf? [D7]
Ruzzz © (2008-11-15 16:50:00)привет! решил на асме функцию написать, вот:
type
TSyms = Set of Char;
function CharInSet(Ch: Char; Syms: TSyms): Boolean;
asm
// and eax, 0FFh
bt [edx], eax
jb @yes
xor eax, eax
ret
@yes:
mov eax, 1
end;
так вот, я вроде когда-то видел более красивый способ получения в EAX, значение флага cf? Подскажите а то асм запыл уже. По-моему все начиная с xor eax, eax, можна заменить на одну команду
AndreyV (2008-11-15 17:53:00) [1]> [4] Ruzzz © (15.11.08 17:46)
И нафиг тут ассемблер.
Ruzzz (2008-11-15 17:52:00) [2]Разобрался
function CharInSet(Ch: Char; Syms: TSyms): Boolean;
asm
and eax, 0FFh
bt [edx], eax
SETC al
end;
AndreyV (2008-11-15 17:49:00) [3]> [3] Ruzzz © (15.11.08 17:42)
Так тебе CF или все?
Да, нужная команда сдвига
rcl
а переходы и вообще не надо.
Ruzzz (2008-11-15 17:46:00) [4]смысл такой:
const
syms: set of char = ['0'..'9', 'A'..'Z', 'a'..'z', 'À'..'ÿ'];
var
s: string;
...
if CharInSet(s[1], syms) then ...
Ruzzz (2008-11-15 17:42:00) [5]по моему есть команды которые пишут состояния флагов в EAX? Я про это!
Т.е. можно написать:
function CharInSet(Ch: Char; Syms: TSyms): Boolean;
asm
bt [edx], eax
НУЖНАЯ КОМАНДА (пишеть флаг CF в EAX)
end;
AndreyV (2008-11-15 17:35:00) [6]> [0] Ruzzz © (15.11.08 16:50)
xor eax,eax
slc или как там сдвиг влево через флаг переноса
а
ret
не хочеш заменить на
jmp @no
?
Leonid Troyanovsky (2008-11-15 16:54:00) [7]
> Ruzzz © (15.11.08 16:50)
> привет! решил на асме функцию написать
А в чем смысл?
--
Regards, LVT.