|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 6, 2003 02:16:07 DEMON84 а пример by Quantum, что не подходит? Ну, или мой... |
|
|
Дата: Авг 6, 2003 02:18:26 Эскюзми, не заметил первую страницу :( Спасибо! |
|
|
Дата: Авг 6, 2003 02:19:36 DEMON84 Я не знаю Fasm, но это можно заменить на: cmp byte ptr [esi],2fh jz metka кажется так, лень в отладчик смотреть... |
|
|
Дата: Авг 6, 2003 02:23:05 · Поправил: Asterix Quantum push eax invoke lstrlen,eax А что так нужно, два раза push eax делать? |
|
|
Дата: Авг 6, 2003 02:24:44 Asterix первый push для pop edi.... |
|
|
Дата: Авг 6, 2003 02:31:54 Asterix кажется так, лень в отладчик смотреть... Совершенно верно (посмотрел в листинге). .IF BYTE PTR [esi]=='\' bla-bla-bla .ENDIFтранслируется в cmp BYTE PTR [esi],'\' jne @F bla-bla-bla @@: |
|
|
Дата: Авг 6, 2003 02:45:03 Ну как вы ребяты свои примеры тестируете... :-) Имеем пример by Quantum, компилим Quantum.exe, и тестируем на строке вида \path\quantum bla bla и на выходе имеем только одно bla. |
|
|
Дата: Авг 6, 2003 03:03:06 · Поправил: Asterix [удалено] |
|
|
Дата: Авг 6, 2003 03:26:23 Вынужден констатировать, что пример by KiNDeR, временно сходит с дистанции, потому что при тестировании в XP, когда в командной строке нет управляющих параметров, пример то ли вообще не запускается, то ли сразу вылетает на ExitProcess, в дебаггере не смотрел, короче никакого пустого MessageBox не показывает! |
|
|
Дата: Авг 6, 2003 03:33:35 · Поправил: KiNDeR Asterix Когда нет "/строка"? А если так?... .386
.model flat, stdcall
option casemap:none
;
.data
;
mParam db 260 dup(0)
;
.code
_start:
xor ebx,ebx
cld ; сбросим флаг направления
call GetCommandLine ; получим нашу командную строку
mov edi,eax ;
mov al,20h ; пробел
mov ecx,260
repne scasb ; найдем конец имени нашей программы
cmp byte ptr [edi],bl
je cmdline_empty
mov al,'/'
repne scasb
mov esi,edi
mov edi,offset mParam
rep movsb
cmdline_empty:
push ebx
push ebx
push offset mParam
push ebx
call MessageBox
_exit_process:
push ebx
call ExitProcess
end _start |
|
|
Дата: Авг 6, 2003 04:02:50 · Поправил: Asterix Пример by KiNDeR снова воспрял духом и продолжает участвовать в конкурсе...:-) |
|
|
Дата: Авг 6, 2003 04:30:29 · Поправил: Asterix Посмотрел, ещё Ваш Quantum & KiNDeR код, и обнаружил что никто из Вас не сохраняет результат вызова GetCommandLine, поэтому я счёл необходимым, для адекватного сравнения, убрать этот код и у себя, в связи с чем, представляю Вариант №5: ---------------------------------------------------------------------- 5) .386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.code
start:
invoke GetCommandLine
mov esi,eax
metka:
.if byte ptr [esi]!=00h
.if byte ptr [esi]!=' '
inc esi
jmp metka
.endif
inc esi
.if byte ptr [esi]!='/'
jmp metka
.endif
inc esi
.endif
xor eax,eax
invoke MessageBox, eax,esi,eax,eax
invoke ExitProcess,NULL
end start |
|
|
Дата: Авг 6, 2003 04:35:07 Asterix еще минус 3 байта... .386
.model flat, stdcall
option casemap:none
;
.data
;
mParam db 260 dup(0)
;
.code
_start:
xor ebx,ebx
cld ; сбросим флаг направления
call GetCommandLine ; получим нашу командную строку
mov edi,eax ;
mov al,20h ; пробел
mov ecx,260
repne scasb ; найдем конец имени нашей программы
cmp byte ptr [edi],bl
je cmdline_empty
mov al,'/'
repne scasb
mov esi,edi
mov edi,offset mParam
mov edx,edi
rep movsb
cmdline_empty:
push ebx
push ebx
push edx
push ebx
call MessageBox
_exit_process:
push ebx
call ExitProcess
end _start
|
|
|
Дата: Авг 6, 2003 04:40:19 [ KiNDeR: Asterix еще минус 3 байта...] 3 байта... это не серьёзно... :-) |
|
|
Дата: Авг 6, 2003 04:43:14 Asterix Вообще-то в обработчиках строк ценится не размер кода, а скорость его выполнения. Так что будем оптимизировать... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.062 |