0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
||||||
1 | ||||||
MASM Вывести значения из ячеек в файл (файл создает, но он пустой)26.10.2022, 20:00. Показов 1494. Ответов 15
Метки нет (Все метки)
0
|
26.10.2022, 20:00 | |
Ответы с готовыми решениями:
15
Составить программу, которая создает каталог, создает в нем файл, переименовывает этот файл и удаляет этот файл, а потом удаляет каталог Переписать все положительные числа в пустой файл f, все отрицательные в пустой файл h Распарсить тексовый файл и вывести неодходимые значения в другой файл Написать bat-файл, который создает bat-файл, который создает текстовый файл :) Копировать значения ячеек в другой файл |
Модератор
1181 / 616 / 282
Регистрация: 10.11.2019
Сообщений: 1,296
|
|
27.10.2022, 12:55 | 2 |
Надо закрыть файл после записи.
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
|
27.10.2022, 16:01 [ТС] | 3 |
Спасибо, попробую.То есть каждый раз, когда надо записать значение, если их несколько, перед каждой записью числа надо записать в файл - закрыть файл, следующее значение записать в файл - закрыть файл.Подскажите преобразование нужно делать из числа шестнадцатеричного в строку и только потом уже записать в файл?Записать нужно из ячеек памяти в файл, несколько раз в цикле.
0
|
Модератор
1181 / 616 / 282
Регистрация: 10.11.2019
Сообщений: 1,296
|
|
27.10.2022, 16:28 | 4 |
Нет, файл удобно закрывать только после завершения всех записей. Т е работает правило бутерброда,
как написал в учебнике информатики Поляков: 1 Открыть (или создать) файл. Здесь в программе на ассемблере обязательно должен проверяться флаг ошибки, и делается переход (JC address) на завершение при ошибке. При ошибке открытия AX содержит код ошибки, а не номер файла ! 2 Работа с данными (чтение, запись, установка позиции в файле) 3 Закрыть файл Это зависит от того, как Вы собираетесь использовать данные из файла. При программировании на ассемблере нет разницы - бинарный файл или текстовый. Но как Вы просматриваете результирующий файл - по F3 из Total Commander или как-то ещё?
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
|
27.10.2022, 19:15 [ТС] | 5 |
Спасибо.Мне нужно файл проанализировать уже отдельно от программы.То есть мне нужно записать туда числа из ячеек памяти и потом открыть файл в Notepad и просмотреть его.
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
|
30.10.2022, 20:13 [ТС] | 6 |
Нет закрытие файла не помогло!В чем может еще быть причина?
Добавлено через 1 минуту Нет закрытие файла не помогло!В чем может еще быть причина?
0
|
Модератор
|
|
30.10.2022, 20:21 | 7 |
Andrew16363, приводите код для проверки.
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
||||||
31.10.2022, 07:35 [ТС] | 8 | |||||
С сегмента данных сообщение string db 'Data source values!' сохраняет в файл.Из ячейки памяти нет!
0
|
Модератор
|
|||||||||||
01.11.2022, 13:34 | 9 | ||||||||||
Во первых, содержимое регистра ax в строке 61 изменяется, т.к. регистр ah - это старшая часть регистра ax. Во вторых, в функцию файловой записи в регистровой паре ds:dx передаётся адрес буфера (ячеек памяти) с данными для записи в файл. Адрес, а не само значение.Можно поместить в ds нужное значение сегмента, а в dx смещение в сегменте. А потом восстановить исходное значение ds. Для сохранения слова по адресу [9000h:00A6h]
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
||||||
02.11.2022, 11:39 [ТС] | 10 | |||||
Доброе утро, Павел.Нет в файле все также пусто.У меня сегмент 9000 смещение 0040, а ячейка в этом фрагменте памяти 00A6h(выше в коде это есть я туда записываю значение). Для чего менять сегмент es на ds и загружать туда мой сегмент и смещение?Из памяти es:[0040+00A6h] разве нельзя вывести? Я в es загрузил сегмент 9000h, а в si 0040 смещение, чтобы не менять так как есть ее ячейки в этом сегменте для записи в файл?
Добавлено через 1 час 3 минуты в dx значение, которое нужно записать в файл верное, а в файле буквы или пустой. Добавлено через 11 минут По поводу DS : DX понял ,указатель на область, из которой записываются данные.Но в файл не пишет. Добавлено через 1 час 14 минут
0
|
Модератор
|
|
02.11.2022, 13:50 | 11 |
В dx должен быть АДРЕС области памяти - конкретно смещение внутри сегмента ds.
Поэтому, если нужно записать в файл содержимое ячейки с адресом 9000h:00A6h, то нужно в ds поместить 9000h, а в dx поместить 00A6h. Функция записи в файл - 40h.
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
|
03.11.2022, 08:59 [ТС] | 12 |
Доброе утро, Павел.Да все сделал как вы описали, но в файл и в консоль также пробовал вывести не записывает.В файле символ пишет.А в консоли набор символов из таблицы ASCII.
Добавлено через 1 минуту При выполнении функции int 21h в AX записывает 0002 и все. Добавлено через 37 секунд В памяти число находится с нужным адресом.
0
|
Модератор
|
||||||
03.11.2022, 15:39 | 13 | |||||
Не знаю, что вы делали.
Взял какой-то код с форума по работе с файлами. Всё лишнее удалил, оставил только открытие/запись/закрытие файла, в какую-то ячейку памяти записал текст, этот текст сохранил в файле. Даже скомпилировалось сразу, и результат в файле тоже есть - текст "Ok!!".
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
|
06.11.2022, 18:44 [ТС] | 14 |
Добрый вечер, Павел.Код, который вы мне предоставили,я попробовал, он работает(спасибо), аналогично и мой вышеизложенный.Но нюанс в том,что вы загружаете строку в ячейку, а попробуйте изменить строку " ko" на число 7h и посмотрите, что запишется в файл txt.Я в предоставленном коде изменил "ko" на число и в файле записались символы.Со строками нет проблем они записываются корректно.Но мне то нужно считывать числа из памяти, а не строки.
0
|
Модератор
|
|||||||||||||||||||||
06.11.2022, 19:09 | 15 | ||||||||||||||||||||
Andrew16363, боюсь, что мы разговариваем в разных терминах.
Когда я говорю, что записываю число в файл, то подразумеваю формат записи идентичный формату хранения этого же числа в памяти. Если открыть созданный файл в hex-редакторе, то увидите 00000000: 4f 6b 21 21 Ok!! Если сделать замену
00000000: 07 00 21 21 ..!! Т.е. программа работает. Если хотите сохранять число из ячейки в текстовом формате в десятичой системе счисления, то возьмите процедуру
0
|
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
|
|
11.11.2022, 20:47 [ТС] | 16 |
Добрый вечер, Павел.Спасибо большое.Разобрался все работает.Благодарен за информацию.
0
|
11.11.2022, 20:47 | |
11.11.2022, 20:47 | |
Помогаю со студенческими работами здесь
16
Создать файл произвольных символов. Вывести в один файл цифры, содержащиеся в файле, а в другой файл символы, сохранив первоначальный порядок. Вывести Создать командный файл, который создает файл дерева каталогов файл который создает xml файл со списком купонов для сайта купонатор Написать командный файл, который создает текстовый файл в указанном подкаталоге корневого диска... Создать пустой бинарный файл, открыть существующий файл, добавить в него 20 действительных чисел Почему не создаётся файл и не производится запись в пустой файл? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |