Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use16
- org 100h
- jmp start
- file_name db 'hello.txt',0
- output_file_name db 'ans.txt',0
- s_error db 'Error!',13,10,'$'
- endline db 13,10,'$'
- buffer rb 81
- res db 81, 79 dup (0)
- char db 'o'
- handle rw 1
- size db 30
- start:
- mov ah,3Dh
- xor al,al
- mov dx,file_name
- xor cx,cx
- int 21h
- jnc @F
- call error_msg
- jmp exit
- @@: mov [handle],ax
- mov bx,ax
- mov ah,3Fh
- mov dx,buffer
- mov cx,80
- int 21h
- jnc @F
- call error_msg
- jmp close_file
- @@:
- push res
- push buffer
- call proc1
- mov ah,3Ch ;Функция DOS 3Ch (создание файла)
- mov dx,output_file_name ;Имя файла
- xor cx,cx ;Нет атрибутов - обычный файл
- int 21h ;Обращение к функции DOS
- jnc @F ;Если нет ошибки, то продолжаем
- call error_msg ;Иначе вывод сообщения об ошибке
- jmp exit ;Выход из программы
- @@: mov [handle],ax ;Сохранение дескриптора файла
- mov bx,ax ;Дескриптор файла
- mov ah,40h ;Функция DOS 40h (запись в файл)
- mov dx,res
- add dx, 2 ;Адрес буфера с данными
- movzx cx,[size] ;Размер данных
- int 21h ;Обращение к функции DOS
- jnc close_file ;Если нет ошибки, то закрыть файл
- call error_msg ;Вывод сообщения об ошибке
- close_file:
- mov ah,3Eh ;Функция DOS 3Eh (закрытие файла)
- mov bx,[handle] ;Дескриптор
- int 21h ;Обращение к функции DOS
- ;Вывод сообщения об ошибке
- exit:
- mov ax,4C00h
- int 21h
- error_msg:
- mov ah,9
- mov dx,s_error
- int 21h
- ret
- proc1:
- push bp
- mov bp, sp
- mov di, char
- mov ah, [di+2]
- mov di, [bp+4]
- mov si, [bp+6]
- mov cl, [size]
- add si, 2
- a:
- mov al, [di]
- cmp al, 'o'
- je b
- mov [si], al
- add si, 1
- b:
- add di, 1
- loop a
- pop bp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement