Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 09.02.2019, 18:02   #1
MAKSIK21
Новичок
 
Регистрация: 09.02.2019
Сообщений: 2
Репутация: 10
Восклицание Найти совпадения (из файла)

Столкнулся с такой проблемой, нужно открыть файл, прочитать его в буфер. В результате работы программы должно вывести сколько определенных символов было в файле. Почему всегда выводит 0.(совпадения есть)
Код:

.586p
.model flat,stdcall
option casemap:none
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/kernel32.lib
includelib /masm32/lib/user32.lib
.data
hinst dd ?
filee dd ?
hfile db "fik.txt",0
str1 db "h",0
str2 db "Find %lu",0
buf db 50 dup (?)
buf2 db 50 dup (?)
bufl dd ?
lens dd ?
sovpad dd 0
.code
start:
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov hinst,eax
invoke CreateFileA,offset hfile,GENERIC_READ or GENERIC_WRITE,0,0,OPEN_EXISTING,0,0
cmp eax,-1
je ERR
mov filee,eax
invoke ReadFile,filee,offset buf,50,offset bufl,0
mov esi,offset buf
mov edi,0
mov bl,byte ptr [str1]
METKA:
cmp edi,bufl
je EXI
cmp bl,byte ptr [esi+edi]
inc edi
jne METKA
inc sovpad
jmp METKA
EXI:
invoke wsprintf, offset buf2,offset str2,sovpad
invoke WriteConsoleA,hinst,offset buf2,sizeof buf2,offset lens,0
invoke CloseHandle,filee
ERR:
invoke Sleep,5000
invoke ExitProcess,0
end start

MAKSIK21 вне форума   Ответить с цитированием
Старый 10.02.2019, 07:10   #2
Ulex
Непрофессионал
Профессионал
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Адрес: город Н-ск.
Сообщений: 1,421
Репутация: 1104
По умолчанию

потому что jne после inc - не правильно.
Код:

METKA:
	cmp edi,bufl
	je EXI
	cmp bl,byte ptr [esi+edi]
	je METKA2
	inc edi
	jmp METKA
METKA2:
	inc edi
	inc sovpad
	jmp METKA
EXI:

__________________
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума   Ответить с цитированием
Старый 10.02.2019, 20:20   #3
MAKSIK21
Новичок
 
Регистрация: 09.02.2019
Сообщений: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от Ulex Посмотреть сообщение
потому что jne после inc - не правильно.
Код:

METKA:
	cmp edi,bufl
	je EXI
	cmp bl,byte ptr [esi+edi]
	je METKA2
	inc edi
	jmp METKA
METKA2:
	inc edi
	inc sovpad
	jmp METKA
EXI:

Спасибо,большое! Совсем забыл, что флаги меняет)
MAKSIK21 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно найти совпадения Х и О и определить победителя lampel Общие вопросы по Java, Java SE, Kotlin 1 26.09.2018 21:15
Задачи на обработку строк: удалить каждую 3-ю букву, найти кол-во гласных, кол-во цифр в строке,совпадения в 2-х строках Ирина93 Паскаль 6 05.11.2011 22:10
Найти совпадения данных в 2ух таблицах.?? fifty50 Microsoft Office Excel 14 24.02.2010 18:46
stringgrid,сравнение двух столбцов на совпадения и не совпадения betirsolt БД в Delphi 7 19.01.2010 16:09
Совпадения shad0w Microsoft Office Excel 3 21.08.2009 12:42


23:43.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru