Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

способ получения в 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо