Помогите найти где ошибка =>
-------------------------------------------------
.....
pushad
xor edx,edx
mov edi,ReadSize
loop_1:
mov ah,byte ptr [pMemory+edx]
mov al,ah
shr ah,4
cmp ah,0Ah
jb below
add ah,37h
jmp j_
below: add ah,30h
j_:
and al,00001111b
cmp al,0Ah
jb below1
add al,37h
jmp j_inc
below1: add al,30h
j_inc:
mov word ptr [pMemoryOut][edx*2], ax
inc edx
cmp edx, edi
jbe loop_1
sal ReadSize,2
dec ReadSize
popad
invoke WriteFile,hNewFile,pMemoryOut,ReadSize,addr WriteSize,NULL
.
------------------------------------------------
Тут я пытаюсь обработать байт из памяти pMemory и записать его в pMemoryOut , затем в файл.
А он выдает ошибку и предлагает Microsoftу отчет послать :)
Ошибка точно на этом участке кода .
Возможно в строке : jbe loop_1
Если ее закоментировать ошибку не выдает, но работает, естественно, не так как надо .
cmp edx, edi
в работе кода регистры никогда не совпадают - edx продолжает накручиваться со всеми вытекающими последствиями .
Проработай алгоритм получше или запиши попроще (компактный код - это хорошо , но не настолько же :) ) .
Попробуй регистры-указатели (edi,esi)по назначению использовать 8) :) , так код проще читать будет .))
Цитата:
Originally posted by koderAlex
Ошибка в строке :
cmp edx, edi
в работе кода регистры никогда не совпадают - edx продолжает накручиваться со всеми вытекающими последствиями .
Ошибка в строке :
cmp edx, edi
в работе кода регистры никогда не совпадают - edx продолжает накручиваться со всеми вытекающими последствиями .
Заменяю cmp edx, edi на cmp edx,ReadSize -> все равно ошибка.
ReadSize - это количество байт, которое мне необходимо обработать ( размер буфера на который указывает pMemory), так что по идее edx и ReadSize когда-нить должно совпасть.
Здесь что-то другое :roll:
Кстати, такая адресация верна : mov word ptr [pMemoryOut][edx*2], ax ?
И в Win32 вместо GlobalAlloc что используют ?
ты под отладчиком посмотри сначала , убедись )
Цитата:
Originally posted by Nigger
Заменяю cmp edx, edi на cmp edx,ReadSize -> все равно ошибка.
ReadSize - это количество байт, которое мне необходимо обработать ( размер буфера на который указывает pMemory), так что по идее edx и ReadSize когда-нить должно совпасть.
Здесь что-то другое :roll:
Кстати, такая адресация верна : mov word ptr [pMemoryOut][edx*2], ax ?
Заменяю cmp edx, edi на cmp edx,ReadSize -> все равно ошибка.
ReadSize - это количество байт, которое мне необходимо обработать ( размер буфера на который указывает pMemory), так что по идее edx и ReadSize когда-нить должно совпасть.
Здесь что-то другое :roll:
Кстати, такая адресация верна : mov word ptr [pMemoryOut][edx*2], ax ?
Неверна!!!
Тьі каким компилятором пользуешся? И куда ти хотел записать ах???