Взял код из этой статьи http://www.wasm.ru/article.php?article=1001012 Мне нужно практически тоже самое только надо подсчитать количество букв "a" в файле при открытии. Код (Text): invoke CreateFile,ADDR buffer,\ GENERIC_READ or GENERIC_WRITE ,\ NULL,\ NULL,OPEN_EXISTING,NULL,\ NULL mov hFile,eax invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE mov hMemory,eax invoke GlobalLock,hMemory mov pMemory,eax invoke ReadFile,hFile,pMemory,MEMSIZE-1,ADDR SizeReadWrite,NULL После этого куска кода я пытался сделать, что-то вроде Код (Text): .while SizeReadWrite > esi mov al,byte ptr pMemory[esi] cmp al, 61h jne noninca inc count noninca: inc esi .endw однако безрезультатно. Буду очень признателен за помощь.
mov esi, pBuf mov ecx,BufSize xor edx, edx @@: dec ecx jz @F lodsb cmp al, 'a' ;если строчные jnz @B inc edx jmp @B @@: ... тут в едх - число букафф
Спасибо большое, если не трудно, то можно еще код, как лучше это число вывести с помощью MessageBox, наброски есть кое-какие, но может что-нибудь универсальное предложите.
Привет kolombo! Держи код: Код (Text): .DATA ... szTitle DB "Преобразованное число",0 szFormat DB "%u",0 ;Тип числа, в данном случае беззнаковое целое ... .DATA? ... szBuff DB 256 DUP (?) ;Ну можно и поменьше :) ... .CODE ... mov edx,23456 ;Число какое-нибудь INVOKE wsprintf,OFFSET szBuff,OFFSET szFormat,edx INVOKE MessageBox,0,OFFSET szBuff,OFFSET szTitle,MB_OK ... Функция wsprintf экспортируется из user32.dll, легальная и документированная. Аналог sprintf из Си. Единственный недостаток - не поддерживает вещественные числа Удачи!