Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Создание файла


Автор: FANDER69 4.10.2015, 20:59
Создание файла. В текущем каталоге диска создать файл с именем MYFILE.001 и записать в него символьную строку. После выполнения программы проверить наличие файла на диске и просмотреть его содержимое.
Реально ли такое проделать?
И на каком именно asm, какой компилятор использовать и какую оболчку?

Автор: R71MT 5.10.2015, 07:09
Цитата(FANDER69 @ 4.10.2015,  20:59)
Реально ли такое проделать?

..а почему-бы нет? На FASM'e это выглядит так:

Код

USE16
ORG 100H
JMP start

fName    DB   'MYFILE.001',0   ; имя файла
string   DB   'My file string: HELLO WORLD!'   ; текстовая строка
strSize  =    $ - string       ; константа с длинной строки
buff     DB   80 DUP(0)        ; буфер 80 байт (забит нулями)
handle   DW   0                ; переменная для дескриптора файла

start:
   MOV   AL,3                  ; видеорежим 80х25/16 цветов ============//
   INT   10h
   
   MOV   AH,3Ch                ; создать файл ==========================//
   MOV   DX,fName              ; имя файла
   MOV   CX,20h                ; атрибут "архивный"
   INT   21h

   MOV   AH,3Dh                ; открыть файл ==========================//
   MOV   AL,2                  ; режим - чтение/запись
   MOV   DX,fName              ; имя файла
   INT   21h
   MOV   [handle],AX           ; сохраняем дескриптор в переменную

   MOV   AH,40h                ; запись в файл =========================//
   MOV   BX,[handle]           ; дескриптор файла
   MOV   CX,strSize            ; сколько байт писАть
   MOV   DX,string             ; адрес текстовой строки
   INT   21h

   MOV   AH,42h                ; перемещаем указатель,
   MOV   AL,0                  ;      .. на начало файла
   MOV   BX,[handle]           ; дескриптор файла
   XOR   CX,CX                 ; CX:DX = 0
   XOR   DX,DX
   INT   21h

   MOV   AH,3Fh                ; читать из файла =======================//
   MOV   BX,[handle]           ; дескриптор файла (от куда читать)
   MOV   DX,buff               ; буфер для приёма данных (куда читать)
   MOV   CX,strSize            ; кол-во байт для чтения
   INT   21h

   MOV   AH,3Eh                ; закрыть файл ==========================//
   MOV   BX,[handle]           ; дескриптор файла (какой файл закрыть)
   INT   21h

   MOV   AH,40h                ; выводим инфу на экран =================//
   MOV   BX,1                  ; дескриптор(1) это STDOUT (или экран)
   MOV   CX,strSize            ; сколько байт вывести
   MOV   DX,buff               ; от куда брать инфу
   INT   21h

   XOR   AX,AX                 ; ожидаем нажатия любой клавиши..
   INT   16h
   INT   20h                   ; выходим из программы! =================//

   

Автор: R71MT 5.10.2015, 22:13
..удивляюсь челам...

Автор: FANDER69 6.10.2015, 11:37
Цитата

..а почему-бы нет? На FASM'e это выглядит так:

сори что сразу не отписал буду под tasm делать, искал подходящий компилятор.
Может вы подскажите каким компилятором лучше пользоваться?
А есть ли для fasm-a что то на подобии emu8086, или типа turbo debager

Автор: FANDER69 7.10.2015, 15:36
Цитата

..а почему-бы нет? На FASM'e это выглядит так:

спасибо всё работает как надо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)