Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 20.03.2020
Сообщений: 8
1
TASM

Создать файл и записать в него текст. Имя файла и текст вводятся с клавиатуры

31.03.2020, 18:35. Показов 870. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте. Задача примерно такая: Создать файл и записать туда текст. Когда создаем файл пишем его название, а если вместо ввода названия нажали Enter (т.е. никак не назвали файл) вывести соответствующее сообщение. У меня получается так, что если мы не вводим название файла, то нам всё равно позволено ввести текст, который будет в файле, однако в консоли пропускается первая строка, а если название введено, то строка не пропускается и всё.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
codesg  segment para    'code'
assume  cs:codesg,ds:codesg,ss:codesg
    org  100h
begin:
;;;;;;;;;;;;;;;;;;;;    
call    clear                     ;i?enoea ye?aia
call    fname                 ;aaia eiaie oaeea n eeaaeaoo?u
call    fopen                 ;ioe?uoea oaeea
mov cx,1                  ;?enei caienae a oaee
f1:        call inputstr      ;aaia no?ie n eeaaeaoo?u
call    fwrite                ;caienu a oaee
loop    f1                        ;eni-ny aey i?aaiecaoee oeeea n ?aaeno?ii cx
call    fclose                ;cae?uoea oaeea
int     20h                       ;int 20h - caaa?oaiea i?ia?aiiu
;;;;;;;;;;;;;;;;;;;;
clear   proc near             ;i?enoea ye?aia
    push    cx                ;?acianoeou cia?aiea a noaea
    mov ax,0600h      ;i?ie?ooea ye?aia
    mov bh,07h            ;iaoeeuo?o?uee eiinieuiue aaia
    mov cx,0000h      ;eii?aeiaou aa?oiaai oaea
    mov dx,184fh      ;eii?aeiaou ie?iaai oaea
    int 10h
    pop cx                ;pop - ecaea?aiea cia?aiey ec noaea
    ret                       ; aica?ao ec aee?aeoae i?ioaao?u
clear   endp
;;;;;;;;;;;;;;;;;;;;
fname   proc near         ;aaia eiaie oaeea
    lea dx,prompt     ;auaia i?eaeaoaiey ia ye?ai
    mov ah,09h
    int     21h
    lea dx,namefile   ;aaia eiaie oaeea
    mov ah,0ah
    int     21h
    mov bl,len
    cmp bl,0
        je  D1            
    xor bh,bh
    mov file[bx],0
    ret                       ;aica?ao ec aee?aeoae i?ioaao?u
fname endp
;;;;;;;;;;;;;;;;;;;;
inputstr    proc near     ;aaia no?iee n eeaaeaoo?u
    call    clear
    call    clstr
    mov ah,0ah
    lea dx,namefile
    int 21h
    mov bl,len
    xor bh,bh
    mov file[bx],' '
    ret                       ;aica?ao ec aee?aeoae i?ioaao?u
inputstr    endp
;;;;;;;;;;;;;;;;;;;;
clstr   proc near
    push    cx
    mov cx,20
    xor bx,bx
l2: mov file[bx],' '
    inc bx
    loop    l2
    pop cx                ;pop - ecaea?aiea cia?aiey ec noaea
    ret                       ;aica?ao ec aee?aeoae i?ioaao?u
clstr endp
;;;;;;;;;;;;;;;;;;;;
fopen   proc near         ;ioe?uoea oaeea ia aenea
    mov ah,3ch
    mov cx,00
    lea dx,file
    int 21h
    jc  t3
    mov handle,ax
    ret
t3: lea dx,msg1           ;auaia niiauaiey a neo?aa ioeaee ioe?uoey
    mov ah,09h
    int 21h
    ret                       ;aica?ao ec aee?aeoae i?ioaao?u
fopen endp
;;;;;;;;;;;;;;;;;;;;
fwrite  proc near                 ;caienu a oaee
    push    cx
    mov ah,40h
    mov bx,handle
    mov cx,22
    lea dx,file
    int 21h
    jc t4                     ;jc - ia?aoia a neo?aa onoaiiaee ia?aiina
    cmp ax,22
    jne t5
    pop cx               ;pop - ecaea?aiea cia?aiey ec noaea
    ret
t4: lea dx,msg2          ;auaia niiauaiey a neo?aa 1-e ioeaee  
    jmp t6
t5: lea dx,msg3          ;auaia niiauaiey a neo?aa 2-e ioeaee
t6: mov ah,09h
    int 21h
    pop cx               ;pop - ecaea?aiea cia?aiey ec noaea
    ret                      ;aica?ao ec aee?aeoae i?ioaao?u
fwrite endp
;;;;;;;;;;;;;;;;;;;;
fclose  proc near        ;cae?uoea oaeea
    mov ah,3eh
    mov bx,handle
        int     21h
    ret                      ;aica?ao ec aee?aeoae i?ioaao?u
fclose endp
;;;;;;;;;;;;;;;;;;;;
D1:
        mov ah,09h
        mov dx,offset msg4
        int 21h
        ret
namefile    label byte       ;eiy nicaaaaaiiai oaeea
maxlen  db  20               ;iaeneiaeuiay aeeia iacaaiey oaeea-1 = 30 
len     db  ?        ;oaeoe?aneay aeeia no?iee
file        db  20 dup(0),0dh,0ah
handle  dw  ?
errcode db  0
prompt  db  'VVEDITE NAZVANIE FAILA: ','$'
msg1    db  'OSHIBKA OTKRITIYA!', 0dh,0ah,'$'
msg2    db  'OSHIBKA ZAPISI #1', 0dh,0ah,'$'
msg3    db  'OSHIBKA ZAPISI #2', 0dh,0ah,'$'
msg4    db  'DLINA VVEDENNOY STROKI RANVA 0!!!$'
;;;;;;;;;;;;;;;;;;;;
codesg  ends                     ;eiiao i?ia?aiiu
    end begin
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2020, 18:35
Ответы с готовыми решениями:

Создать текстовый файл и записать в него 5 одинаковых строк, которые вводятся с клавиатуры
Файлы.

Создать файл и записать в него текст
"если файла нет создать сразу с словами" я знаю как создать файл через c++ ofstream...

Создать файл и записать в него 4 вещественных числа, записываемые числа и слова вводятся с клавиатуры
создать файл и записать в него 4 вещественных числа. Записываемые числа и слова вводятся с...

Создать файл, записать в него текст и закрыть файл
Написать программу,, которая создаст файл в текущем каталоге, запишет текст: «Kak mne nadoel asm» и...

4
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
31.03.2020, 18:42 2
А в какой строке вы проверяете, что длина имени файла равна 0?
0
0 / 0 / 0
Регистрация: 20.03.2020
Сообщений: 8
31.03.2020, 18:50  [ТС] 3
Я конечно, не шарю. Я попытался сделать это в 35-36 строке
0
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
31.03.2020, 18:57 4
Тогда проговорите происходящее в этих и последующих строках.
35-36 если длина имени равна 0, то выполнить строки 107-111
107-110 вывести сообщение об ошибке
111 ret - вернуться из процедуры fname в основную программу к строке 8
8 fopen и т.д.

Что мешает тексту вводиться?
1
0 / 0 / 0
Регистрация: 20.03.2020
Сообщений: 8
31.03.2020, 19:04  [ТС] 5
блин, точно

Добавлено через 20 секунд
вы мне помогли, спс
0
31.03.2020, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2020, 19:04
Помогаю со студенческими работами здесь

Создать .txt файл с именем <СегодняшняяДата> и записать в него текст
Подскажите, как создать .txt файл с именем &lt;СегодняшняяДата&gt; и записать в него текст, а если такой...

Создать файл .doc и записать в него текст определённого шрифта
Добрый день. В программе создаётся файл .txt, в него записывается текст &quot;Привет&quot;. StreamWriter...

Из командной строки получить имя файла, создать файл и записать в него фразу
сделал прогу которая читает командную строку, создает файл и пишет в него фразу. под отладчиком...

Как в uwp, при нажатии на кнопку(батон клик), ЗАПИСАТЬ ТЕКСТ из текст бокса, который мы заранее в него вводили,в файл
Помогите, срочнооо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru