Автор Тема: Чтение блоками из файла.  (Прочитано 871 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн wgenius

  • Коллежский регистратор
  • *
  • Сообщений: 3
  • Репутация: 0
Чтение блоками из файла.
« : јРЩ 30, 2009, 04:15:58 pm »
Доброго времени суток. Пишу программу которая читает строку из файла и затем заменяет в ней 1 подстроку на 2
Возникла следующая проблема, если весь текст файла не убирается в буфер и при этом часть искомой подстроки находится в первом считанном блоке, а другая часть во втором... как можно решить проблему?
Для нахождения подстроки использую код:

CLD
    LEA DI,STR2
    MOV AX,0
    MOV DX,DI
LO:
;Строка STR1 длиной N1 ищется в строке STR2 длиной N2.
    MOV CX,N1
    LEA SI,STR1 + 2
    REPE CMPSB
    JE FOUND
    INC DX
    INC AX
mov BX, N2
inc bx
sub bx, N1
    CMP AX,BX
    JZ NO_FOUND
    MOV DI,DX
    JMP LO

FOUND:
;строка найдена
;Производим замену подстрки
CLD
mov cx,2
push dx
pop di
LEA SI, STR3 + 2 ;Откуда

rep movsb
;Выводим результат
lea dx, STR2
mov ah, 9
    int 21h

NO_FOUND:
;строка не найдена

lea dx, net
    mov ah, 9
    int 21h