Необходимо доделать программу срочно по ассемблеру(в коде есть пара ошибок, задача удалить во всех строках текста слова предшествующие словам содержащим заданный набор букв! masm LengthBuffer EQU 128 LengthString EQU 16 True EQU 1 False EQU 0 .model small .stack 1024 .data MsgFileLoading db 'Enter file name:',0Dh,0Ah,'$' ;0Dh,0Ah - perevod stroki MsgFileSaving db 0Dh,0Ah,'Save file as:',0Dh,0Ah,'$' MsgSimbolSearch db 'Search chars:',0Dh,0Ah,'$' MsgError db 'Error!',0Dh,0Ah,'$' bufferList label byte maxLen db 80 actLen db ? bufferKeyboard db 80 dup(' ') fileRead dw 0 fileWrite dw 0 PtrInFileRead dd 0 PtrInFileWrite dd 0 SearchChar db 't', 15 dup(0) SearchCharCopy db 16 dup(?) ReadBuffer db LengthBuffer dup(?) WriteBuffer db LengthBuffer dup(?) PtrReadBuf dw 0 PtrWriteBuf dw 0 LenReadBuf dw 0 LenWriteBuf dw 0 StartWord dd 0 EndWord dd 0 StartPreWord dd 0 EndPreWord dd 0 EnterWord db 0 EnterPreWord db 0 .code DellWord proc near ret DellWord endp ShiftFilePtr proc near push bx push dx mov bx , word ptr PtrInFileRead ;операнд в памяти интерпретировать размером в слово mov dx , word ptr PtrInFileRead + 2 add bx , LenReadBuf adc dx , 0 ;Если был перенос mov word ptr PtrInFileRead , bx mov word ptr PtrInFileRead + 2 , dx pop dx pop bx ret ShiftFilePtr endp InBuffer proc near push ax push bx mov ax , LenReadBuf mov bx , PtrReadBuf cmp ax , bx jne MNoRead call ReadFileInBuffer xor bx , bx mov PtrReadBuf , bx ret MNoRead: inc PtrReadBuf pop bx pop ax ret InBuffer endp NoChar proc near cmp al , 20h ;сравнение с пробелом je MEndWord cmp al , 0dh ; сравнение с переводом строк je MEndWord cmp al , 0ah ; сравнение с переводом строк je MEndWord cmp al , 09h ;сравнение с гориз табуляцией je MEndWord cmp al , 21h je MEndWord cmp al , 28h je MEndWord cmp al , 29h je MEndWord cmp al , 3Fh je MEndWord call InBuffer jmp MNextChar MEndWord: cmp EnterWord , False je NoEnterWord mov ax , word ptr PtrInFileRead ;Сохраняем указатель на конец слова mov bx , PtrReadBuf add ax , bx mov word ptr EndWord , ax mov ax , word ptr PtrInFileRead + 2 adc ax , 0 mov word ptr EndWord + 2 , ax call InBuffer NoEnterWord: Call SaveStartWord jmp MNextChar ret NoChar endp ReadFileInBuffer proc near push ax push bx push cx push dx mov ah , 3Fh mov bx , fileRead ;дискриптор файла mov cx , LengthBuffer ;размер буффера lea dx , ReadBuffer ;начало буфера в памяти int 21h mov LenReadBuf , ax ;сохраняем длину получ информации pop dx pop cx pop bx pop ax ret ReadFileInBuffer endp SaveStartWord proc near push ax push dx push bx mov EnterWord , True mov ax , word ptr PtrInFileRead ;Сохраняем указатель на начало слова mov bx , word ptr PtrInFileRead + 2 mov dx , PtrReadBuf sub ax , LenReadBuf sbb bx , 0 add ax , dx adc bx , 0 mov word ptr StartWord , ax mov word ptr StartWord + 2 , bx pop bx pop dx pop ax ret SaveStartWord endp SearchAndDell proc near mov al , SearchChar mov SearchCharCopy , al ;Настройка первого чтения, создание копии искомого набора ;cld ;Установка напровления ;lea si , SearchChar ;Адрес источника ;lea di , SearchCharCopy ;Адрес приемника ;mov cx , LengthString ;Кол-во копируемых байт ;rep movsb MReadBuffer: call ReadFileInBuffer jc MErrorRead ;если ошибка cmp LenReadBuf , 0 ;прочиталось ли инфорация (кол-во байт) je MReadZero call ShiftFilePtr MNextChar: mov bx , PtrReadBuf mov al , ReadBuffer[bx] ;Очередной символ из буффера cld lea di , SearchCharCopy mov cx , LengthString repne scasb ;Поиск символа в наборе jz MBeChar call NoChar jmp MNextChar MBeChar: ;Символ найден ;call BeChar mov [di-1] , byte ptr 0 mov bl , EnterWord cmp bl , True je EnterWordE call SaveStartWord EnterWordE: mov cx , 16 repne scasb mov EnterWord , True ;Возможно не нужно jz AllZero cmp bx , LengthBuffer call InBuffer jmp MNextChar AllZero: call DellWord cld lea si , SearchChar lea di , SearchCharCopy mov cx , LengthString rep movsb jmp MNextChar MErrorRead: MReadZero: EndReadE: ret SearchAndDell endp main: mov ax , @data mov ds , ax mov es , ax nextTry: mov ah , 09 ;функция вывода на монитор lea dx , MsgFileLoading int 21h mov ah , 0Ah ;ввод данных с клавиатуры lea dx , bufferList int 21h mov bl , actLen ;выбор последнего+1 символа=0Dh в имени файла и его обнуление xor bh , bh mov bufferKeyboard[bx] , 0 mov ah , 3Dh ; чтение из файла mov al , 2 lea dx , bufferKeyboard int 21h jnc noErrorRead mov ah , 09 lea dx , MsgError int 21h jmp nextTry noErrorRead: mov fileRead , ax ;сохранение дескриптора(номера) откр файла NextTryCreate: mov ah , 09 ;функция вывода на монитор lea dx , MsgFileSaving int 21h mov ah , 0Ah ;ввод данных с клавиатуры lea dx , bufferList int 21h mov bl , actLen ;выбор последнего+1 символа=0Dh в имени файла и его обнуление xor bh , bh mov bufferKeyboard[bx] , 0 mov ah , 3Ch ;создание файла mov cx , 0 lea dx , bufferKeyboard int 21h jnc noErrorCreate mov ah , 09 lea dx , MsgError int 21h jmp nextTryCreate noErrorCreate: mov fileWrite , ax mov ah , 09 ;функция вывода на монитор lea dx , MsgSimbolSearch int 21h call SearchAndDell mov ah , 3Eh ;закрытие файла mov bx , fileRead int 21h mov ah , 3Eh mov bx , fileWrite int 21h mov ax, 4c00h int 21h end main