Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. use16
  2. org 100h
  3. jmp start
  4.  
  5. file_name db 'hello.txt',0
  6. output_file_name db 'ans.txt',0
  7. s_error db 'Error!',13,10,'$'
  8. endline db 13,10,'$'
  9. buffer rb 81
  10. res db 81, 79 dup (0)
  11. char db 'o'
  12. handle rw 1
  13. size db 30
  14.  
  15. start:
  16. mov ah,3Dh
  17. xor al,al
  18. mov dx,file_name
  19. xor cx,cx
  20. int 21h
  21. jnc @F
  22. call error_msg
  23. jmp exit
  24. @@: mov [handle],ax
  25.  
  26. mov bx,ax
  27. mov ah,3Fh
  28. mov dx,buffer
  29. mov cx,80
  30. int 21h
  31. jnc @F
  32. call error_msg
  33. jmp close_file
  34.  
  35. @@:
  36. push res
  37. push buffer
  38. call proc1
  39.  
  40. mov ah,3Ch ;Функция DOS 3Ch (создание файла)
  41. mov dx,output_file_name ;Имя файла
  42. xor cx,cx ;Нет атрибутов - обычный файл
  43. int 21h ;Обращение к функции DOS
  44. jnc @F ;Если нет ошибки, то продолжаем
  45. call error_msg ;Иначе вывод сообщения об ошибке
  46. jmp exit ;Выход из программы
  47. @@: mov [handle],ax ;Сохранение дескриптора файла
  48.  
  49. mov bx,ax ;Дескриптор файла
  50. mov ah,40h ;Функция DOS 40h (запись в файл)
  51. mov dx,res
  52. add dx, 2 ;Адрес буфера с данными
  53. movzx cx,[size] ;Размер данных
  54. int 21h ;Обращение к функции DOS
  55. jnc close_file ;Если нет ошибки, то закрыть файл
  56. call error_msg ;Вывод сообщения об ошибке
  57.  
  58. close_file:
  59. mov ah,3Eh ;Функция DOS 3Eh (закрытие файла)
  60. mov bx,[handle] ;Дескриптор
  61. int 21h ;Обращение к функции DOS
  62. ;Вывод сообщения об ошибке
  63.  
  64. exit:
  65. mov ax,4C00h
  66. int 21h
  67.  
  68. error_msg:
  69. mov ah,9
  70. mov dx,s_error
  71. int 21h
  72. ret
  73.  
  74. proc1:
  75.  
  76. push bp
  77. mov bp, sp
  78. mov di, char
  79. mov ah, [di+2]
  80. mov di, [bp+4]
  81. mov si, [bp+6]
  82. mov cl, [size]
  83. add si, 2
  84. a:
  85. mov al, [di]
  86. cmp al, 'o'
  87. je b
  88. mov [si], al
  89. add si, 1
  90. b:
  91. add di, 1
  92. loop a
  93. pop bp
  94. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement