Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.28;
Скачать: CL | DM;

Вниз

Флаги   Найти похожие ветки 

 
Rocker ©   (2003-05-24 10:28) [0]

Есть какая-то комбинация флагов (как известно это числа - 2 в какой-то степени), допустим 2+8+32. Получим 42. Как определить, если изначально дано число 42, какие флаги при этом были использованы? То есть, если дано 42, то получить: 2,8,32.
Как это осуществить методами Delphi (Pascal) я знаю. А как на ассемблере?


 
Anatoly Podgoretsky ©   (2003-05-24 10:39) [1]

А как ты делаешь это на Дельфи и зачем это делать на ассемблере?


 
Юрий Зотов ©   (2003-05-25 15:06) [2]

> А как на ассемблере?

Так же. Просмотреть, какие биты установлены, вот и все.


 
icWasya ©   (2003-05-26 13:23) [3]

> Как это осуществить методами Delphi (Pascal) я знаю. А как на ассемблере?

ставишь точку останова на первом операторе
Run -> Run
когда остановится - View->Debug Window->CPU

и смотри что получилось


 
Digitman ©   (2003-05-26 14:03) [4]

function GetBitSet(Value: Integer; out BitNums: PByteArray): Integer;
asm
push esi
mov esi, ecx
mov edx, eax
xor ecx, ecx
xor eax, eax
@@1:
shr edx, 1
jnc @@2
mov [esi], cl
inc esi
inc eax
@@2:
inc ecx
cmp ecx, 32
jb @@1
pop esi
end;

procedure TForm1.Button4Click(Sender: TObject);
var
List: PByteArray;
i, NumOfBitsSet: Integer;
s: string;
begin
GetMem(List, 32);
try
NumOfBitsSet := GetBitSet(65534, List);
for i := 0 to NumOfBitsSet - 1 do
s:= s + IntToStr(List[i]) + #10;
ShowMessage(s);
finally
Freemem(List);
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
3-91639
Devil
2003-07-03 22:27
2003.07.28
Обмен


3-91638
prihod
2003-07-04 17:00
2003.07.28
Какой оптимальный языковой драйвер для таблиц FoxPro


4-91961
Grayver
2003-05-22 21:50
2003.07.28
2 вопроса (про трей и едит)


3-91667
Skywalker
2003-07-04 17:25
2003.07.28
Почему не работает запрос?


6-91794
paul_77
2003-05-22 17:23
2003.07.28
? как считать некоторый параметр из реестра