Форум программистов, компьютерный форум, киберфорум
xqwetzi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

TASM корректировка кода

Запись от xqwetzi размещена 18.03.2024 в 01:03
Показов 1279 Комментарии 1
Метки asm, tasm

Пожалуйста помогите превратить из кода, который переписывает строки с ! знаком на конце в код, который будет переписывать строки с ! знаком, который находится в любом месте строки



.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
Метки asm, tasm
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Аватар для DrType
    Создайте тему в разделе https://www.cyberforum.ru/assembler/ и задайте в ней этот вопрос.
    Запись от DrType размещена 18.03.2024 в 10:51 DrType вне форума
 
Новые блоги и статьи
Жара жесть.
kumehtar 18.08.2026
Пролетают летом дни Тридцать пять жары в тени. Каждый август год от года Дарит жаркую погоду.
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru