Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. .model small
  2. .data
  3. msg1 db 13,10,'Vvedite imya fayla: $'
  4. msg2 db 13,10,'Sozdat fiail? (y/n)?$'
  5. msg3 db 13,10,'Vvedite stroku dlya zapisi v file: $'
  6. msg4 db 13,10,'Programma zavershena.$'
  7. buf db 200,205 dup(0) ;принимает строку, введенную с клавиатуры
  8. .stack 256
  9. .code
  10. start:
  11. mov ax,@data ;Настраиваем сегментные регистры
  12. mov ds,ax
  13. ;ввод имени текстового файла
  14. mov ah,9 ;функция вывода сообщения на экран
  15. lea dx,msg1 ;выводимое сообщение
  16. int 21h ;выводим на экран
  17. mov ah,0ah ;функция ввода строки с клавиатуры
  18. mov dx,offset buf ;буфер куда вводить
  19. int 21h ;пользователь вводит в текст в buf
  20. mov bl,buf[1] ;длина введенной строки
  21. mov bh,0 ;bx=длина введенной строки
  22. mov buf[bx+2],byte ptr 0;добавить 0 в конец введенной строки
  23. mov ax,3d01h ;функция открытия файла на запись
  24. lea dx, buf[2] ;введенное имя файла
  25. int 21h ;попытка открыть
  26. jnc opened ;если открыт - переход
  27. mov ah,9 ;функция вывода сообщения на экран
  28. lea dx,msg2 ;выводимое сообщение
  29. int 21h ;выводим на экран
  30. m1: mov ah,0 ;ф-я ожидания нажатия клавиши
  31. int 16h ;ожидаем нажатия клавиши
  32. cmp ah,49 ;если N
  33. jz ex ;то выход
  34. cmp ah,21 ;если не Y
  35. jnz m1 ;то повторить ввод
  36. mov ah,3ch ;ф-я создания файла
  37. mov cx,0 ;атрибуты файла
  38. lea dx, buf[2] ;введенное имя файла
  39. int 21h ;создать новый файл
  40. opened: mov bx,ax ;сохранить хэндл созданного/открытого файла
  41. mov ax,4202h ;переместить
  42. xor cx,cx ;указатель файла
  43. xor dx,dx ;в конец
  44. int 21h
  45. mov ah,9 ;функция вывода сообщения на экран
  46. lea dx,msg3 ;выводимое сообщение
  47. int 21h ;выводим на экран
  48. mov ah,0ah ;функция ввода строки с клавиатуры
  49. mov dx,offset buf ;буфер куда вводить
  50. int 21h ;пользователь вводит в текст в buf
  51. lea si,buf[2] ;начало введенного текста
  52. lp: mov al,[si] ;взять очередной символ
  53. cmp al,13 ;если конец строки
  54. jz fin ;то закончить
  55. cmp al,'.' ;если точка
  56. jnz m2
  57. mov [si],byte ptr ',' ;то заменить ее на запятую
  58. m2: inc si ;следующий символ
  59. jmp lp ;обработать всю строку
  60. fin: mov cl,buf[1] ;длина введенной строки
  61. mov ch,0 ;сx=длина введенной строки
  62. mov si,cx
  63. mov buf[si+2+1],byte ptr 10 ;За символом 13 в конце строки добавить 10
  64. add cx,2 ;длина строки+перевод строки
  65. lea dx,buf[2] ;адрес строки
  66. mov ah,40h ;ф-я записи
  67. int 21h ;дописываем строку в файл
  68. mov ah,3eh ;закрываем
  69. int 21h ;файл
  70. ex: mov ah,9 ;функция вывода сообщения на экран
  71. lea dx,msg4 ;выводимое сообщение
  72. int 21h ;выводим на экран
  73.  
  74. mov ah,1 ;Ожидаем нажатия любой клавиши
  75. int 21h
  76. mov ax,4c00h ;закончить программу
  77. int 21h
  78.  
  79. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement