Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/56: Рейтинг темы: голосов - 56, средняя оценка - 4.79
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
NASM

Запись в файл

31.07.2018, 13:29. Показов 11450. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не получается сделать с клавиатуры запись в существующий файл

есть файл с правами доступа для записи и чтения n.asm

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
section .data
      file dw "n.asm"
section .text
         global _start
       mov eax, 3
       mov ebx, 0
        mov ecx, file
        mov edx, 10
        int 0x80
        mov eax , 1
 
         int 0x80

не пишет.
как сделать, чтобы писал?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2018, 13:29
Ответы с готовыми решениями:

Запись в файл
Подскажите где ошибка пожалуйста.Перезаписываю файл, устанавливаю указатель записи. mov ah,42h mov bx,handle mov dx,2 ...

Запись в файл
подскажите пожалуйста как записать массив и ответ в файл вот этой программы MASM model small .stack 100h .data mas db 10 ...

Запись в исполняемый файл
Нужен пример на ассемблере записи в исполняемый файл.

22
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
31.07.2018, 13:38
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

pcmax,
ты должен
  1. открыть файл на запись и получить хэндэл файла
  2. используя хэндэл произвести запись в файл
  3. закрыть файл
  4. закрыть программу
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 14:00  [ТС]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
section .data
      file dw "n.asm"
section .text
         global _start
 
        mov eax, 5
 
          mov ebx, file
          mov ecx, 002h
           int 0x80
           mov ebx, eax
            mov eax, 3
              mov ecx, file
              mov edx, 10
              int 0x80
 
 
               mov eax, 1
                 int 0x80
 
 
исправте и добавте пожалуйтса
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
31.07.2018, 14:18
pcmax,
а где закрытие файла? Каким справочником ты пользуешься? Каким учебником?
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 18:07  [ТС]
да тут ребята на форуме учат.... в гугле tasm как пример использовал...


ребята, что то сохраняется в файл какая -то фигня, совсем не похожа на цифру 5 которую я ввожу с клавы
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
31.07.2018, 18:15
pcmax,
Цитата Сообщение от Mikl___ Посмотреть сообщение
Каким справочником ты пользуешься? Каким учебником?
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 18:39  [ТС]
ребята, да Столярова читал.....



ну помогите уже. что добавить в код? или как его переписать?

Добавлено через 16 минут
ну подскажите,я уже второй день сижу и не могу сделать
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
31.07.2018, 18:44
Вы на C/C++ программы делали? Так вот по отношению к файлам функции C всего лишь "обёртка" над ассемблером.
Сделайте минимальную программу на C и сделайте построчный перевод на ассемблер.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 18:52  [ТС]
у меня в одно ухо влетело, а другое .........



я уже и не помню, что там на С++



просто подскажите, что написать в Ассемблер, чтобы вводя склавиатуры число, оно писалось в файл
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
31.07.2018, 19:05
Отсюда

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
    section .text
 
    global _start
 
        _start:
                    mov EAX, 8
                    mov EBX, filename
                    mov ECX, 0700
                    int 0x80
                    mov EBX, EAX
                    mov EAX, 4
                    mov ECX, text
                    mov EDX, textlen
                    int 0x80
                    mov EAX, 6
                    int 0x80
                    mov eax, 1
                    int 0x80
 
    section .data
 
        filename db "./output.txt", 0
        text db "hello world", 0
        textlen equ $ - text
Ещё немного и я заочно научусь работать в Linux (у меня даже близко его нет).
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 19:19  [ТС]
ребята, это круто, но такая прога не запишет ничего в файл....
она просто его создаст

Добавлено через 9 минут
не , соори ....
работает))))))))))))))))))
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
31.07.2018, 19:20
А почему?
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 19:25  [ТС]
да меня сбило с толку , что системный вызов на создание файла. за менил 8 на 5
ну вобщем записал в файл код этот слово


спасибо огромное за то что нашли время на такие глупости по разъяснению очевидного

спасибо)))
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
31.07.2018, 19:55
Во-первых, почему file dw "n.asm", а не file db "n.asm",0 (db!!!) ?
В данном случае тебе везёт, т.к. длина строки нечётная, и в конец записывается ноль (маркер конца строки – конца имени файла), но если бы файл назывался, скажем, no.asm, то не повезло бы. Так что переходим на db. Ты понимаешь в чём разница между db и dw, dd, dq и т.д.?

Во-вторых (это всё ещё про открытие), режим указывается в edx, а не в ecx. А в ecx нужно положить флаги (O_CREAT | O_TRUNC = 0x1100, т.е. создать файл, если его нет и обрезать до 0, если есть).

В-третьих, запись в файл – это функция 4, а не 3.

Ну и в-четвёртых, закрыть файл – функция 6.

p.s. У тебя половина ошибок (если не большая часть) из-за невнимательности: перепутаны номера функций, регистры и директивы (db/dw). Если не работает, перепроверяй все эти вещи, а потом уже можно и тему создавать.

Добавлено через 21 минуту
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
mov EAX, 8
Ну или так.
Давно открыл сообщение, не видел новых ответов.
3
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 19:58  [ТС]
это 3 я пытался с клавиатуры вводить , чтобы записывалось в файл....



с клавиатуры не получается. только если строка инициализирована в data секции, то ее могу, с клавы даже цифру не заносит. просто пусто в файле
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
31.07.2018, 20:00
Только 0 после строки "hello horld" не нужен тут.
И "./" перед именем файла можно тоже опустить, но можно и оставить (это уже придирки).
2
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 20:24  [ТС]
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
section .bss
  num resb 2
section data
   file db "m.asm"
section .text
   global _start
_start:
    mov eax, 5 -окрываю файл m.asm -который уже создан с правами на запись и чтение
    mov ebx, file -указываю адрес 
    mov ecx, 002h 
     int 0x80
 
    mov ebx ,eax  -если перенесу дискрептор, то не получится ввод с клавиатуры.
поэтому делаю
    mov eax, 3
    mov ebx, 0
    mov ecx, num
    int 0x80
 
   mov ebx, eax
  mov eax, 4
  mov ecx, file  -думаю что это не сработает. поэтому делаю
 
   mov eax, 4
   mov ebx, [num]
   mov [file], ebx
    int 0x80

что -то не так в моих городушках
но я близок уже к к тому , что вопросов не останется
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
31.07.2018, 20:32
Возьмём за основу исходник, приведённый Федосеевым Павлом (кстати, там косяк: не 0x700, а просто 700 нужно писать в ecx).
Так вот, чтение с клавы и запись в файл:
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
    BUFSIZE equ 1024
    section .text
 
    global _start
 
        _start:
                    mov eax,3
                    xor ebx,ebx
                    mov ecx,text
                    mov edx,BUFSIZE
                    int 0x80
                    push eax  ; длина прочитанных с клавиатуры данных
 
                    mov eax,8
                    mov ebx,filename
                    mov ecx,700
                    int 0x80
 
                    mov ebx,eax
                    mov eax,4
                    mov ecx,text
                    pop edx  ; длина прочитанных с клавиатуры данных
                    int 0x80
 
                    mov eax,6
                    int 0x80
 
                    mov eax,1
                    xor ebx,ebx
                    int 0x80
 
    section .data
 
        filename db "output.txt", 0
 
    section .bss
 
        text resb BUFSIZE
p.s. Кстати, пардон, я ошибся по поводу ecx и edx для 5-й функции (sys_open). Всё же в ecx заносится O_CREAT|O_WRONLY|O_TRUNC (1101), а в edx S_IRWXU (700), например...
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
    BUFSIZE equ 1024
    section .text
 
    global _start
 
        _start:
                    mov eax,3
                    xor ebx,ebx
                    mov ecx,text
                    mov edx,BUFSIZE
                    int 0x80
                    push eax  ; длина прочитанных с клавиатуры данных
 
                    mov eax,5
                    mov ebx,filename
                    mov ecx,1102
                    mov edx,700
                    int 0x80
 
                    mov ebx,eax
                    mov eax,4
                    mov ecx,text
                    pop edx  ; длина прочитанных с клавиатуры данных
                    int 0x80
 
                    mov eax,6
                    int 0x80
 
                    mov eax,1
                    xor ebx,ebx
                    int 0x80
 
    section .data
 
        filename db "output.txt", 0
 
    section .bss
 
        text resb BUFSIZE
3
31.07.2018, 20:45

Не по теме:

Воспользовался служебным положением и исправил

Цитата Сообщение от Jin X Посмотреть сообщение
исходник, приведённый Федосеевым Павлом (кстати, там косяк: не 0x700, а просто 700 нужно писать в ecx)
Спасибо

0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
31.07.2018, 21:13  [ТС]
ну ваще, вот прям спасибо


тяжело мне дается понимание
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2018, 21:13
Помогаю со студенческими работами здесь

Запись массива в файл
Такой вопрос. Я написал програму, которая записывает в файл последние восемь нажатий клавиатуры, и время этих самых нажатий. Реализовал это...

Запись данный в файл
.586 .model flat, stdcall GENERIC_READ equ 80000000h GENERIC_WRITE equ 40000000h CREATE_ALWAYS equ 2 includelib...

Запись числа в файл
нужно прочитать файл и записать в другой файл в столбкик знаки аского кода и напротив сколько раз они встречаются в файле...... ...

Запись в файл. Не работает.
Здравствуйте, вот нужно написать программу записывающую данные в файл, а она не работает. Вроде компилятор ошибки не выдает, но файл не...

Прямая запись в файл
не пойму как это сделать. не обычная ли это запись в файл? d_s segment filename db 'file.txt',0 buffer db 'Hello' dirname db...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru