| Сейчас на форуме: ==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 —› Основной форум —› алгоритм | 






 Для печати