· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как правильно передать String из eax а ecx?

Посл.отвђт Сообщенiе


Дата: Июн 18, 2003 21:24:15 · Поправил: Безпощадный даос

Вопрос №1: Как правильно передать String из eax а ecx??? Где тут ошибка??
invoke GetCommandLine
mov ecx, eax
invoke MessageBox,HWND_DESKTOP,ecx,"DPRSystem by ID!0t.",MB_OK

Вопрос №2: Как мне разложить строку. Например скопировать от символа Х до конца строки???


Дата: Июн 19, 2003 00:02:23

Вопрос №1:
call dword ptr GetCommandLine
mov ecx, eax //
push MB_OK
mov edx,szlpt
push edx
push ecx
push 0 ;HWND_DESKTOP
call dword ptr MessageBox
lodsb

Вопрос №2:
вначале надо пойнтер на 'X' найти в в строке
если пойнтер в регистре ECX
наиболее понятно будет

mov al,[ecx]
cmp al,0
jz noFound
cmp al,'X'
jz Found
inc ecx
jmp lb1
noFound:

Found:
mov ecx,len_str1
mov esi,ecx
les edi,str2
cld
rep movsb
в случае с UNICOD'ом
mov ax,[ecx]
cmp ax,0
jz noFound
cmp ax,'X'
jz Found
add ecx,2
jmp lb1
HO
более оптимально через LODSB но для UNICOD для 32 разрядной платформы
LODSW после ассеблирования пойдет с префексом 66h


Дата: Июн 19, 2003 00:35:31

SmikeX
. . .
push 0 ;HWND_DESKTOP
call dword ptr MessageBox
lodsb
; <- а зачем lodsb?
. . .
mov al,[ecx]
cmp al,0

Перед этим забыли поставить метку lb1:


Дата: Июн 19, 2003 02:36:29

Скопировать строку или ее часть можно с помощью Win32Api функций:
lstrcpy - от заданной позиции и до конца
lstrcpyn - от заданной позиции заданное количество символов


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.077