Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .data
- msg1 db 13,10,'Vvedite imya fayla: $'
- msg2 db 13,10,'Sozdat fiail? (y/n)?$'
- msg3 db 13,10,'Vvedite stroku dlya zapisi v file: $'
- msg4 db 13,10,'Programma zavershena.$'
- buf db 200,205 dup(0) ;принимает строку, введенную с клавиатуры
- .stack 256
- .code
- start:
- mov ax,@data ;Настраиваем сегментные регистры
- mov ds,ax
- ;ввод имени текстового файла
- mov ah,9 ;функция вывода сообщения на экран
- lea dx,msg1 ;выводимое сообщение
- int 21h ;выводим на экран
- mov ah,0ah ;функция ввода строки с клавиатуры
- mov dx,offset buf ;буфер куда вводить
- int 21h ;пользователь вводит в текст в buf
- mov bl,buf[1] ;длина введенной строки
- mov bh,0 ;bx=длина введенной строки
- mov buf[bx+2],byte ptr 0;добавить 0 в конец введенной строки
- mov ax,3d01h ;функция открытия файла на запись
- lea dx, buf[2] ;введенное имя файла
- int 21h ;попытка открыть
- jnc opened ;если открыт - переход
- mov ah,9 ;функция вывода сообщения на экран
- lea dx,msg2 ;выводимое сообщение
- int 21h ;выводим на экран
- m1: mov ah,0 ;ф-я ожидания нажатия клавиши
- int 16h ;ожидаем нажатия клавиши
- cmp ah,49 ;если N
- jz ex ;то выход
- cmp ah,21 ;если не Y
- jnz m1 ;то повторить ввод
- mov ah,3ch ;ф-я создания файла
- mov cx,0 ;атрибуты файла
- lea dx, buf[2] ;введенное имя файла
- int 21h ;создать новый файл
- opened: mov bx,ax ;сохранить хэндл созданного/открытого файла
- mov ax,4202h ;переместить
- xor cx,cx ;указатель файла
- xor dx,dx ;в конец
- int 21h
- mov ah,9 ;функция вывода сообщения на экран
- lea dx,msg3 ;выводимое сообщение
- int 21h ;выводим на экран
- mov ah,0ah ;функция ввода строки с клавиатуры
- mov dx,offset buf ;буфер куда вводить
- int 21h ;пользователь вводит в текст в buf
- lea si,buf[2] ;начало введенного текста
- lp: mov al,[si] ;взять очередной символ
- cmp al,13 ;если конец строки
- jz fin ;то закончить
- cmp al,'.' ;если точка
- jnz m2
- mov [si],byte ptr ',' ;то заменить ее на запятую
- m2: inc si ;следующий символ
- jmp lp ;обработать всю строку
- fin: mov cl,buf[1] ;длина введенной строки
- mov ch,0 ;сx=длина введенной строки
- mov si,cx
- mov buf[si+2+1],byte ptr 10 ;За символом 13 в конце строки добавить 10
- add cx,2 ;длина строки+перевод строки
- lea dx,buf[2] ;адрес строки
- mov ah,40h ;ф-я записи
- int 21h ;дописываем строку в файл
- mov ah,3eh ;закрываем
- int 21h ;файл
- ex: mov ah,9 ;функция вывода сообщения на экран
- lea dx,msg4 ;выводимое сообщение
- int 21h ;выводим на экран
- mov ah,1 ;Ожидаем нажатия любой клавиши
- int 21h
- mov ax,4c00h ;закончить программу
- int 21h
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement