0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 1

Не записывает данные в файл

22.05.2015, 17:05. Показов 1349. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я только начал изучать ассемблер. Помогите пожалуйста разобраться почему не хотят записываться данные и время в файл. Все остальное вроде работает как надо: ввод чисел, нахождение максимального, создание файла.
Вот код:

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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
model small
 .stack 400h 
.data
    c10     dw  10
    c6  equ 6
    h   db  ?           ; часы
    m   db  ?           ; минуты
    s   db  ?           ; секунды
    massiv  dw  10 dup(?)
    msg1    db  13,10,"Vvedite  10 chisel cherez probel razmernost'u 000...255 ",13,10, "Posle najmite enter", 13,10,"$"
    msg2    db  13,10,"Maksimal'noe chislo = $"
    msg3    db  13,10,"Massiv: "
    msg4    db  13,10,"Vremya: "
    msg5    db  13,10,"Yazik programmirovania: Assembler"
    msg6    db  ":"
    msg7    db  13,10,"Rezultat zapisan v fail << rezult.txt >>",13,10,"PROBEL dlya vihoda",'$'
    f_n db  'prim.txt',0        ; имя файла в который сохранится ответ
    w_s db  c6 dup (?), ' ' ; строка для вывода цифр в файл
    
    
.code
start:
    mov ax,@data
    mov ds,ax
    mov ah,09h      ; вывод приглашения для ввода чисел
    lea dx,msg1
    int 21h
    mov di,0            ; в di - max
    ; Ввод массив с клавиатуры
        xor cx,cx               ; обнуляем cx
    xor dx,dx           ; в dx - очередное число
input_loop:
    mov ah,01h      ; ввод символа
    int 21h
    cmp al,0dh          
    je chislo           
    cmp al,20h          ; если пробел
    je chislo           ; то занести число в массив
    sub al,30h          ; вычитаем '0'
    mov cl,al           
    mov ax,dx           
    mul c10         ; умножаем на 10
    xor ch,ch
    add ax,cx           ; добавляем цифру из al
    mov dx,ax           ; число снова в dx
    jmp input_loop  ; снова вводим число
chislo:
    mov bx,cx           
    shl bx,1            
    mov massiv[bx],dx   
    inc cx          
    
    cmp dx,di           ; сравниваем число с максиальным
    jg maximum      ; если оно больше, то jmp на maximum
    jmp chislo_cont     ; иначе jmp на chislo_cont
    
maximum:
    mov di,dx           ; запоминаем максимальное число в di
chislo_cont:
    xor dx,dx           ; dx в ноль
    cmp cx,20           
    je end_input        
    cmp al,0dh          ; если был нажат enter
    je end_input        ; то конец ввода
    jmp input_loop
end_input:
    mov ah,09h      ; вывод на экран msg2
    lea dx,msg2
    int 21h
    mov ax,di           
    call output         ; выводим это число
    jmp outputfail              ; выводим результат в файл
    
    mov ah,4ch          ; завершение программы
    int 21h
output proc             ; процедура вывода числа, находящегосы в ax
    xor cx,cx           ; счетчик цифр
div_loop:
    xor dx,dx           ; подготовка к делению
    div c10         ; деление
    add dx,30h          ; в dx - ASCII-код остатка от деления
    push dx         ; сохраняем его в стеке
    inc cx          ; инкремент счетчика
    cmp ax,0            ; деление, покуда частное не нулевое
    je out_loop
    jmp div_loop
    
    ; Процедура записи времени
time:
        mov ah,2Ch          ; функция возврата времени
        int 21h         ; выводим время
        mov h,ch            ; в h часы
        mov m,cl            ; в m минуты
        mov s,dh            ; в s  секунды
    ret                 ; возвращаемся к основной программе       
    
out_loop:               
    pop dx          
    mov ah,02h      ; и выводим его на экран
    int 21h
    loop out_loop       
    ret
    
    outputfail:
    ; Создаём файл
        mov ah,3Ch          ; функция создания файла в текущем каталоге
        lea dx,f_n          ; в dx имя создаваемого файла
        xor cx,cx           ; обнуляем cx
        int 21h         
        mov bx,ax               
        ; Записываем в файл
        mov ah,40h          ; функция записи в файл
        mov cx,msg3-msg2        
        lea dx,msg2         
        int 21h         ; записываем в файл
    mov ax,di       ; в ax цифру которую надо вывести
    mov ah,40h          ; функция записи в файл
        mov cx,c6           
        lea dx,w_s          ; в dx адрес буфера, содержащего записываемые данные
        int 21h         ; записываем в файл  
        
        ;new
        mov ah,40h          ; функция записи в файл
        mov cx,msg4-msg3        ; число записываемых байтов в cx
        lea dx,msg3         
        int 21h         ; записываем в файл      
    
    write:
        push    cx          
        mov ax,massiv[di]       ; записываем в ax элемент массива
    
            mov ah,40h      ; функция записи в файл
            mov cx,c6+1     ; число записываемых байтов в cx
            lea dx,w_s      
            int 21h     
        add di,2            ; di+1
        pop cx          ; извлекаем сx из стека
    loop write              ; повторяем цикл
        mov ah,40h          ; функция записи в файл
        mov cx,msg5-msg4        ; число записываемых байтов в cx
        lea dx,msg4         ; в dx адрес буфера, содержащего записываемые данные
        int 21h         
        
    call    time                ; записываем время
    mov al,h                
    mov ah,0                
    
        mov ah,40h          ; функция записи в файл
        mov cx,2            
        lea dx,w_s+4        
        int 21h         
        mov ah,40h          
        mov cx,msg7-msg6        
        lea dx,msg6         
        int 21h         
    mov al,m                
    mov ah,0                
    
        mov ah,40h          ; функция записи в файл
        mov cx,2            
        lea dx,w_s+4        
        int 21h         
        mov ah,40h          
        mov cx,msg7-msg6        
        lea dx,msg6         
        int 21h         
    mov al,s                
    mov ah,0                
    
        mov ah,40h          ; функция записи в файл
        mov cx,2            ; число записываемых байтов в cx
        lea dx,w_s+4        
        int 21h         ; записываем в файл
        mov ah,40h          
        mov cx,msg6-msg5        
        lea dx,msg5         ; в dx адрес буфера, содержащего записываемые данные
        int 21h         ; записываем в файл
 
        ; Закрываем файл
    mov ah,3Eh              ; функция записи в файл
    int 21h             ; закрываем файл
wait_exit:
    mov ah,09h              ; функция вывода на экран
    lea dx,msg7             ; помещаем в dx сообщение, которое надо вывести
    int 21h             ; прерывание дос (выводит на экран сообщение)
    ; Закрываем окно программы
spacebar:
    mov ah,0                ; записываем в ah 0
    int 16h             ; принемаем нажатия кнопки клавиатуры
    cmp al,20h              
    jne spacebar            
exit:
    mov ax,4C00h            
    int 21h             
 output endp
end start
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2015, 17:05
Ответы с готовыми решениями:

Не записывает данные в файл
Здравствуйте, использую PHP 5.5.38 в связке с VkAPI. Собственной вот листинг нерабочего кода. foreach ($wall_get as $wall) { ...

Не записывает данные в файл
не могу понять почему ничего в файле не меняется. данные в файле: BSUIR petia 16 BSUIR petrov 20 по идее они должны в файле...

Не записывает данные в файл
Парни, подскажите пожалуйста. Все выполняеться но файл send.txt так и остаеться пустым, туда нечего не хочет записываться. Раньше не...

1
 Аватар для Ethereal
6772 / 2740 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
22.05.2015, 17:20
Цитата Сообщение от junia20 Посмотреть сообщение
mov al,m
mov ah,0
mov ah,40h ; функция записи в файл
Вот подобного рода сочетания говорят о том, что ты не особо думаешь, что делаешь.
Стоило в ah записывать ноль, чтобы тут-же затереть этот ноль числом 40h ?

Добавлено через 1 минуту
Цитата Сообщение от junia20 Посмотреть сообщение
mov ax,di ; в ax цифру которую надо вывести
mov ah,40h ; функция записи в файл
Еще пример того-жа самого. В ax засунем цифру (или что у тебя там ?) и тут-же затрем у нее старший байт. Типа выкрасим и выбросим.

Добавлено через 3 минуты
Что-то меня пробивает на де-жа-вю. Ты с Ruta не в одной группе числишься ?
Просто там тоже было
Цитата Сообщение от junia20 Посмотреть сообщение
msg4 db 13,10,"Vremya: "
msg5 db 13,10,"Yazik programmirovania: Assembler"
Вот эта тема
Вычислите среднее арифметическое элементов массива. Числа представлены в формате с фиксированной точкой
Вот я там намучился.

Добавлено через 3 минуты
Можешь смело драть оттуда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2015, 17:20
Помогаю со студенческими работами здесь

Функция не записывает в файл данные
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using...

Программа не записывает данные в файл
Программа не записывает данные в файл помогите исправить #include&lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

fstream не записывает данные в файл
Если к примеру открываю файл так : fstream io; io.open(&quot;test.txt&quot;); то читает из файла хорошо, если при этом не записывать ничего....

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

Функция addTextFile неправильно записывает данные в файл
Здраствуйте, проблема с функцией addTextFile, при выборе должно додавать данные в начало / конец файла, но недодает, в чем проблема? все...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Динамические массивы в C++ - создание и использование
NullReferenced 27.04.2025
Динамические массивы представляют собой один из фундаментальных инструментов программирования на C++, позволяющий создавать структуры данных, размер которых определяется во время выполнения. . .
Асинхронный JavaScript: Промисы, Async/Await и Fetch API
Reangularity 27.04.2025
Пользователь заходит на веб-страницу, нажимает кнопку и. . . ничего не происходит. Сайт словно замер. Через несколько секунд всё внезапно оживает, но пользователь уже успел закрыть вкладку. Знакомая. . .
Management on GitLab and repository management in Visual Studio code
jigi33 27.04.2025
- repo management on GitLab - CI/ CD in GitLab - VCS repository management in Visual Studio code (see attachments)
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru