bomzzz
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору а специальные команды переставляющие байты нельзя использовать? правда я их с ходу не вспомню. не доводилось использовать ну или хотя бы ROL уже будет проще, но эти команды по такту на смещение используют - неэкономно получится BSWAP Цитата: mov eax, dword ptr [value] bswap eax mov dword ptr [value], eax | Цитата: .686 .model flat, stdcall option casemap :none include \MASM32\INCLUDE\windows.inc include \MASM32\INCLUDE\user32.inc include \MASM32\INCLUDE\kernel32.inc includelib \MASM32\LIB\user32.lib includelib \MASM32\LIB\kernel32.lib .data mestitle db "Bomz",0 form db "EAX: %x", 0 value dd 1A2B3C4Dh .data? buffer db 512 dup(?) .code start: mov eax, dword ptr [value] bswap eax mov dword ptr [value], eax invoke wsprintf,ADDR buffer,ADDR form,eax invoke MessageBox,0,ADDR buffer,ADDR mestitle,MB_ICONASTERISK invoke ExitProcess,0 end start | работкаит Добавлено: Цитата: .486 .model flat, stdcall option casemap :none include \MASM32\INCLUDE\windows.inc include \MASM32\INCLUDE\user32.inc include \MASM32\INCLUDE\kernel32.inc includelib \MASM32\LIB\user32.lib includelib \MASM32\LIB\kernel32.lib .data mestitle db "BSWAP",0 form db "EAX: %x",13,10,"EBX: %x", 0 value dd 1A2B3C4Dh .data? buffer db 64 dup(?) .code start: mov ebx, dword ptr [value] mov eax, ebx bswap ebx mov dword ptr [value], ebx invoke wsprintf,addr buffer,addr form,eax,ebx invoke MessageBox,0,addr buffer,addr mestitle,MB_ICONASTERISK invoke ExitProcess,0 end start | http://rghost.ru/39992136 486 процессор уже BSWAP поддерживал Добавлено: и еще - не особо понял твой алгоритм, у тебя переставляются байт в памяти, а это гораздо медленне чем переставлять их в регистрах. дажене смотря на то что все это будет делать в кеше Добавлено: вот с rol Цитата: .386 .model flat, stdcall option casemap :none include \MASM32\INCLUDE\windows.inc include \MASM32\INCLUDE\user32.inc include \MASM32\INCLUDE\kernel32.inc includelib \MASM32\LIB\user32.lib includelib \MASM32\LIB\kernel32.lib .data mestitle db "ROL",0 form db "EAX: %x",13,10,"EBX: %x", 0 value dd 1A2B3C4Dh .data? buffer db 64 dup(?) .code start: mov ebx, dword ptr [value] mov eax, ebx rol bx, 8 rol ebx, 16 rol bx, 8 mov dword ptr [value], ebx invoke wsprintf,addr buffer,addr form,eax,ebx invoke MessageBox,0,addr buffer,addr mestitle,MB_ICONASTERISK invoke ExitProcess,0 end start | Добавлено: а если препод будет возбухать скажи, что на это надо давать задачу на сортировку массива или быструю сортировку строк, а в этой задачи учащиеся ознакомились с командами ROL и SWAP в чем гораздо больше пользы, чем учиться неоптимально тупорыло задачи поставленные решать | Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:51 25-08-2012 | Исправлено: bomzzz, 14:29 25-08-2012 |
|