Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+6 невидимых) |
![]() |
eXeL@B —› Основной форум —› алгоритм |
Посл.ответ | Сообщение |
|
Создано: 01 февраля 2005 10:18 · Личное сообщение · #1 необходимо перебрать числа начиная с 0x00000000 по 0x99999999 и отсеять те, где присутствуют [A..F] делаю примерно так.. как оптимизировать? mov dword ptr[_name],-1 @lll: inc dword ptr[_name] mov ecx,8 mov eax,dword ptr[_name] @ddd: mov bl,al and bl,0Fh cmp bl,0Ah jge @lll ror eax,4 loop @ddd cmp dword ptr[_name],99999999h jl @lll ![]() |
|
Создано: 01 февраля 2005 10:47 · Личное сообщение · #2 |
|
Создано: 01 февраля 2005 15:03 · Личное сообщение · #3 В твоём случае могу предложить вместо всего куска: mov dword ptr[_name], 99999999h ret результат на выходе процедуры будет тотже самый. А если серьёзно, то не понятно что ты делаешь с отфильтрованным массивом (куда он заносится или какие действия нужно с этими числами производить?), полностью опиши задачу - а там уже посмотрим. ![]() |
|
Создано: 01 февраля 2005 15:43 · Личное сообщение · #4 |
|
Создано: 01 февраля 2005 20:04 · Личное сообщение · #5 wasm.ru и правда рулит www.wasm.ru/forum/action=vthread&forum=17&topic=8569 MEW я написал всего лишь часть (обобщил).. поставленую задачу решил. вот это решение, которое подсказал Black_mirror с wasm - рулит не по детски lea eax,[edx+66666667h] not eax and edx,eax and edx,88888888h not eax shr edx,1 xor eax,edx shr edx,1 xor eax,edx sub eax,66666666h mov edx,eax ![]() |
|
Создано: 01 февраля 2005 21:45 · Личное сообщение · #6 |
|
Создано: 01 февраля 2005 21:47 · Личное сообщение · #7 |
|
Создано: 04 февраля 2005 01:55 · Личное сообщение · #8 |
|
Создано: 04 февраля 2005 02:22 · Личное сообщение · #9 |
![]() |
eXeL@B —› Основной форум —› алгоритм |