Цитата(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 ; выходим из программы! =================//
|
|