TASM корректировка кода
Запись от xqwetzi размещена 18.03.2024 в 01:03
Показов 1279
Комментарии 1
|
Пожалуйста помогите превратить из кода, который переписывает строки с ! знаком на конце в код, который будет переписывать строки с ! знаком, который находится в любом месте строки .386 dseg segment use16 text1 db 129, 130 dup(0) text2 db 0Ah, 0Dh, 'Enter the route to the file(Up to 128 symbols): $' text5 db 0Ah, 0Dh, 'Error! Please, try again later $' buffer db 129, 130 dup(0) text3 db 0Ah, 0Dh, 'The file is empty! $' text4 db 0Ah, 0Dh, 'New file has been created!$' text6 db 0Ah, 0Dh, 'File exists! $' strok db 128 dup (0) descript1 dw ? descript2 dw ? leng dw ? dseg ends cseg segment use16 assume ds:dseg, cs:cseg m1: mov dx, dseg ;Ввод пути к файлу и открытие файла для чтения по заданному пути mov ds, dx mov ah, 9h lea dx, text2 int 21h mov ah, 0Ah lea dx, buffer int 21h movzx si, buffer+1 mov buffer[si+2], 0 mov ah, 3dh mov al, 2 lea dx, buffer+2 int 21h jc mistake mov bx, ax mov descript1, ax mov ah, 9h lea dx, text6 int 21h mov si, 0 mov ah, 42h mov al, 2 mov cx, 0 mov dx, 0 int 21h mov ds:leng, ax mov ah, 42h mov al, 0 mov cx, 0 mov dx, 0 int 21h cmp ds:leng, 0 jz mistake1 ;Создание файла mov ah, 9h lea dx, text2 int 21h mov ah, 0Ah lea dx, buffer int 21h movzx si, buffer+1 mov buffer[si+2], 0 mov ah, 3ch mov cx, 0 lea dx, buffer+2 int 21h jc mistake mov bx, ax mov descript2, ax mov ah, 9h lea dx, text4 int 21h mov si, 0 ;запись строки в файл cycle: mov ah, 3Fh mov bx, ds:descript1 mov cx, 1 lea dx, ds:[strok+si] int 21h cmp ax, 0 jz short m2 cmp ds:[strok+si-3], '!' jnz short m5 cmp ds:[strok+si-2], 0dh jnz short m5 mov ah, 40h mov bx, descript2 lea dx, ds:strok inc si mov cx, si int 21h mov si, 0 jmp short cycle m5: inc si cmp ds:[strok+si-2], 0Ah jnz short m6 mov si, 0 m6: jmp short cycle ;Отдельная обработка последней строки m2: cmp ds:[strok+si], '!' ;! знак последний jz short zapis_last dec si cmp ds:[strok+si], '!' ;! знак последний - строка заканчивается кодом OD/OA jz short zapis_last dec si cmp ds:[strok+si], '!' ;! знак последний - строка заканчивается кодом OD и OA jnz short close zapis_last: mov ah, 40h mov bx, descript2 lea dx, ds:strok inc si mov cx, si int 21h close: ;закрытие файла mov ah, 3Eh mov bx, descript1 int 21h mov ah, 3Eh mov bx, descript2 int 21h jmp short exit mistake1: mov ah, 9h lea dx, text3 int 21h jmp short exit mistake: mov ah, 9h lea dx, text5 int 21h exit: mov ah, 4ch int 21h cseg ends end m1 |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
-
Создайте тему в разделе https://www.cyberforum.ru/assembler/ и задайте в ней этот вопрос.Запись от DrType размещена 18.03.2024 в 10:51


