Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
не надо Api... 10.12.01 09:49 Число просмотров: 1041
Автор: Chingachguk <Chingachguk> Статус: Member Отредактировано 10.12.01 09:50 Количество правок: 1
|
> Каким образом на ASM под Win32 найти в одной строке нужный > элемент (число или символ) и записать на его место другой > элемент? > Я пытался использовать scas и stos - и не получилось. > Может там какие API-функции есть?
Все должно работать... Вышли код свой...
Ты использовал scas через di или edi ?
|
<programming>
|
Каким образом на ASM под Win32 10.12.01 08:47
Автор: New Статус: Незарегистрированный пользователь
|
Каким образом на ASM под Win32 найти в одной строке нужный элемент (число или символ) и записать на его место другой элемент?
Я пытался использовать scas и stos - и не получилось.
Может там какие API-функции есть?
|
|
не надо Api... 10.12.01 09:49
Автор: Chingachguk <Chingachguk> Статус: Member Отредактировано 10.12.01 09:50 Количество правок: 1
|
> Каким образом на ASM под Win32 найти в одной строке нужный > элемент (число или символ) и записать на его место другой > элемент? > Я пытался использовать scas и stos - и не получилось. > Может там какие API-функции есть?
Все должно работать... Вышли код свой...
Ты использовал scas через di или edi ?
|
| |
не надо Api... 11.12.01 07:48
Автор: New Статус: Незарегистрированный пользователь
|
> Все должно работать... Вышли код свой... > Ты использовал scas через di или edi ?
Я использовал edi
Код высылаю (но он такой корявый)
Прога компилируется нормально но вот при нажатии 105 она зависает
.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
memsize equ 2000
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
start_func PROTO ; :DWORD,:DWORD
LOWORD MACRO bigword
mov eax,bigword
and eax,0FFFFh
ENDM
HIWORD MACRO bigword
mov eax,bigword
shr eax,16
ENDM
.data
dlgname db "IDD_DIALOG1",0
hInstance dd 0
hList dd 0
szAbout db "© JoKEr,2001 ",13,10
db "Coded in: Asm (Masm) ",13,10
db "E-mail: JoKEr@rambler.ru ",13,10
db " ",0
buff db '0',0
hfile dd 0
hmemory dd 0
pmemory dd 0
szrw dd 0
hwnd1 dd 0
gettick dd 0
mass_ dd 100 dup (888) ;это типа строка,которую обрабатывать
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
invoke ExitProcess,eax
WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
mov eax,hWin
mov hwnd1,eax
.if uMsg == WM_INITDIALOG
invoke LoadIcon,hInstance,100
invoke SendMessage,hWin,WM_SETICON,1,eax
invoke SetWindowPos,hWin,HWND_TOP+HWND_TOPMOST,NULL,NULL,NULL,NULL,SWP_NOMOVE+SWP_NOSIZE
xor eax,eax
ret
.elseif uMsg == WM_COMMAND
LOWORD wParam
.if eax == 104
invoke MessageBox,hWin,addr szAbout,addr szTitle,MB_OK+MB_ICONINFORMATION
.elseif eax == 103
invoke start_func ;вот нужная строка
.endif
xor eax,eax
ret
.elseif uMsg == WM_CLOSE
invoke ShowWindow,hWin,SW_MINIMIZE
invoke EndDialog,hWin,0
xor eax,eax
ret
.endif
xor eax,eax
ret
WndProc endp
start_func proc
sluch_number: ;здесь получаем типа случайное число (ну почти случайное)
invoke GetTickCount
mov gettick,eax
mov ebx,100
div ebx
mov gettick,edx
invoke SetDlgItemInt,hwnd1,105,gettick,0
mov eax,gettick
lea edi,offset mass_ ;вот эта строчка у меня подозрение вызывает
repe scasd
jcxz next_1
jmp sluch_number
next_1:
mov eax,888
lea edi,offset mass_ ;и эта строчка тоже,а в чем дело не соображу
repe scasd
jcxz next_2
dec edi
mov eax,gettick
stosd mass_
next_2:
invoke SetDlgItemInt,hwnd1,112,gettick,0
xor eax,eax
ret
start_func endp
end start
|
| | |
не надо Api... 11.12.01 08:31
Автор: Chingachguk <Chingachguk> Статус: Member
|
> > Все должно работать... Вышли код свой... > > Ты использовал scas через di или edi ? > Я использовал edi > Код высылаю (но он такой корявый) > Прога компилируется нормально но вот при нажатии 105 она > зависает >
OK. Будет время - гляну обязательно внимательно.
А пока мне не нравится только это:
jcxz next_2 ; Все OK, edi где - то в массиве
dec edi ; И счас она в массиве, но указывает совсем не на
; элементы размером dd
mov eax,gettick
stosd mass_ ; Немного странновато так индексировать ...
|
|
|