Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/64: Рейтинг темы: голосов - 64, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 5

Создание файла

27.02.2012, 21:38. Показов 12501. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу на языке Assembler, что создает файл C:\1.txt
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2012, 21:38
Ответы с готовыми решениями:

Создание файла
Нужно создать файл при этом нужно ввести его имя и содержание. Помогите пожалуйста найти ошибку программа имя, и содержимое файла вводит но...

Создание файла
Вроде бы простейший код: CSEG segment org 100h _start: mov ax,3Ch ; создаем файл mov cx,00h ...

Создание файла с использованием FCB
Здравствуйте. Лабораторная работа создать файл, внести в него данные и т.д. У меня не получается создать файл. Думаю, если б получилось, то...

2
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
29.02.2012, 14:03
Лучший ответ Сообщение было отмечено как решение

Решение

imworld, набрать в поисковой строке "создание файла функцией DOS" очень сложно?
1)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
; masm dos com #
.model tiny
.286
.CODE
org 100h
BEGIN:  mov ah,3Ch
    mov cx,0; атрибуты файла
    mov dx,offset filename
    int 21h
    retn
filename db 'myfile.txt',0
END BEGIN
еще несколько вариантов создания файла в DOS
2)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov ah,5Bh
    mov cx,0; атрибуты файла
    mov dx,offset filename
    int 21h
    retn
filename db 'myfile.txt',0
end start
3)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov cx,0; атрибуты файла - обычный файл
    mov bx,2 ;режим доступа чтение-запись
    mov dx,10h 
    mov si,offset filename;указатель на имя файла 
    mov ah,6Ch
    int 21h ;создаем файл 
    retn
filename db 'myfile.txt',0
end start
4) создаем файл с длинным именем (до 255 символов) и чуствительным к регистру
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov cx,0; атрибуты файла - обычный файл
    mov bx,2 ;режим доступа чтение-запись
    mov dx,10h 
    mov si,offset filename;указатель на имя файла 
    mov ax,716Ch
    int 21h 
    retn
filename db 'myfile.txt',0
end start
5) через блок управления файлом (FCB)
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
; masm dos com #
.286
.model tiny
.code
org 100h
FCB struct
    drive_num   db ?
    file_name   db 8 dup(20h)
    file_ext    db 3 dup(20h)
    block_num   dw ?
    record_size dw ?
    file_size   dd ?
    file_data   dw ?
    rezerved    db 10 dup(?)
    current_rec db ?
    random_rec  dd ?
FCB ends
start:  mov ah,16h
    mov dx,offset fcb
    int 21h
    ret
fcb FCB <0,'myfile','txt'>
;0 - диск по умолчанию, далее 8-байтовое имя файла
;если меньше, то заполняется пробелами, далее 3-байтовое расширение
end start
6) создаем файл при помощи набора команд DOS
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov bx,100h ;выделим блок памяти в 256 параграфов
    mov ah,4Ah       
    int 21h
    mov bx,offset parametrs ;указываем на блок параметров
    mov [bx+4],cs
    mov dx,offset filename
    mov ax,4B00h;загрузить и выполнить программу из командной строки
    int 21h
    retn        ;выход в DOS
command_line db N,'/c copy nul myfile.txt',0Dh
N = $-command_line-1;длина командной строки
;командная строка типа pascal, начинается с байта длины строки, заканчивается
;ASCII-кодом клавиши Enter (0Dh). При передаче команды CMD.EXE нужно указать /С перед 
;строкой (требование вызова вторичного командного процессора). Программу cmd.exe
;из папки windows\system32\ проще разместить в том же каталоге, что и программа
filename db 'cmd.exe',0
parametrs dw 0,command_line,5 dup(0);блок параметров
end start
7) можно вызвать через функцию 4Bh прерывания 21h Norton или Volcov Commander и сымитировать нажатие клавиш Alt+F4, а затем ввести название файла
8) 9) всё зависит от фантазии и степени вашей извращенности, присоединяйтесь и покажите, как еще можно создать файл
5
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
05.03.2012, 10:13
7) Загрузить COMMAND.COM и настроить его по месту в памяти не используя функцию 4Bh прерывания 21h
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
; masm dos com #
.286
.model tiny
.code
org     100h
start:  mov ah,4Ah  ;модифицируем назначенную память
    mov bx,100h     ;новый размер блока в параграфах
    int 21h         
    mov bx,0FFFFh   ;требуемое число параметров для выполнения
    mov ah,48h  ;вделить блок памяти
    int 21h     ;возвращает в bx размер наибольшего доступного блока 
;памяти в параграфах
    mov ah,48h  ;вделить блок памяти, в bx действительно доступная память
    int 21h         ;возвращает в ах сегментный адрес выделенного блока
    mov es,ax       ;es:=new PSP
    mov ss,ax       ;ss:=new PSP
    xchg dx,ax      ;dx:=new PSP
    mov ah,26h  ;создать новый префикс программного сегмента
    int 21h         
    mov dx,offset filename
    mov di,80h      ;указатель на командную строку
    mov cx,(N+1)/2  ;копируем по два байта за раз, N округлен в большую 
;сторону к числу кратному два, поэтому добавочный movsb не нужен
    mov si,offset command_line
    rep movsw       ;создаем командную строку для запуска command.com
        mov ax,3D00h    ;открыть command.com на чтение
    int 21h
    xchg bx,ax  ;дескриптор файла в bx
    xor cx,cx       ;cx=dx=0
    xor dx,dx
    mov ax,4202h    ;установить файловый указатель на конец файла
    int 21h
    push ax         ;сохраним в стеке длину файла command.com
    mov ax,4200h    ;установить файловый указатель на начало файла
    int 21h
    mov dx,es       ;пересчитываем чему должен быть равен dx из расчета,
    add dx,10h      ;что cs*10h+dx=es*10h+100h
    mov cx,cs
    sub dx,cx
    shl dx,4        ;в dx адрес буфера, куда будет скопирован command.com
    pop cx      ;в сх число байтов для чтения 
    mov ah,3Fh  ;читаем command.com в буфер
    int 21h
    mov ah,3Eh  ;закрыть файл command.com
    int 21h
    mov ax,es       ;ds:=new PSP
    mov ds,ax       ;при старте СОМ-файла cs=ds=es=ss=PSP ip=100h
    push es         ;новое значение cs:=new PSP
    push 100h       ;новое значение ip:=100h
    retf            ;запускаем command.com для создания файла myfile.txt
filename db 'c:\windows\system32\command.com',0;полный путь к command.com
command_line db N-1,'/c copy > myfile.txt',0Dh
N = $ - command_line
db 0; если N нечетное, то скопируется и добавочный нулевой символ 
end     start
8) имитируем вызов int 21h
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
; masm dos com #
.286
.model tiny
.code
org 100h
start:
;получаем дальний адрес (cs:ip) обработчика 
;прерывания 21h из таблицы векторов прерывания
    push 0;сегментный адрес  таблицы векторов прерывания в es  
    pop es      
    mov di,es:[21h*4];смещение обработчика прерывания 21h в di
    mov si,es:[21h*4+2];сегмент обработчика прерывания 21h в si
;параметры для функции 3Ch прерывания 21h
    mov cx,0    ;аттрибуты файла (обычный файл)
    mov dx,offset filename;имя создаваемого файла
    mov ah,3Ch      ;номер функции
;три параметра в стек для возврата из прерывания
    pushf           
        push cs
        push offset @f  ;адрес возврата
;имитируем вызов int 21h
    push si     ;cs для int 21h
    push di     ;ip для int 21h
    retf        ;подменяем cs и ip
@@: mov ah,4Ch      ;выход из программы
    int 21h
filename db 'myfile.txt',0
end start
9)
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
; masm dos com #
.286
.model tiny
.code
org 100h
FCB struct
    drive_num   db ?
    file_name   db 8 dup(20h)
    file_ext    db 3 dup(20h)
    block_num   dw ?
    record_size dw ?
    file_size   dd ?
    file_data   dw ?
    rezerved    db 10 dup(?)
    current_rec db ?
    random_rec  dd ?
FCB ends
start:  push offset @f    ; Занести в стек флаги, сегмент
    push cs           ;    и смещение адреса возврата
    pushf             ;    в обратном порядке.
    mov cl,16h
    mov dx,offset fcb
    jmp dword ptr ALT_DOS_PTR ; Выполнить функцию.
@@: mov ah,4Ch
    int 21h 
fcb FCB <0,'myfile','txt'>
;0 - диск по умолчанию, далее 8-байтовое имя файла
;если меньше, то заполняется пробелами, далее 3-байтовое расширение
ALT_DOS_PTR dw  0C0h,0;адрес для перехода в альтернативный обработчик
end start
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2012, 10:13
Помогаю со студенческими работами здесь

Создание obj файла
Здравствуйте. Помогите пожалуйста скомпилить прогу! Перечитал статьи,и как там пишут,надо ввести ml /c proga,asm - появляется ml не...

Создание нового файла!
Народ, решил попробовать программировать на асме! До этого программировал и программирую на с++... Может, сейчас задам тупой вопрос, но...

Создание файла (путь вводится с клавиатуры)
не могу создать файл.. если я ввожу путь с клавы..... maxLen equ 25 str_in label byte in_maxLen...

Создание файла с задаваемым пользователем именем
есть обычная функция создания файла, без ввода имени с клавы, например такая mov ah,3Ch mov dx,offset File_name; mov cx,100010b ...

перенести создание файла в основную нерезидентную часть
Ребята, пожалуйста, окажите помощь. Написал программу резидeнтную, которая запиcывaет в фaйл то, что на экрaнe. В ДОСБОКСе работает...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru