| Глава 1 | стр 8 |
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin:
; ------------- Откроем файл ----------------
mov dx,offset File_from
call Open_file ;Открываем файл
jc Error_file ;Ошибка?
; ------------- Прочитаем файл ----------------
mov bx,ax ;поместим в bx номер файла
mov ah,3Fh ;Функция чтения файла
mov cx,10h ;сколько байт будет считано
lea dx,mas_w ;! Адрес, куда будут читаться данные
int 21h
; ------------- Закроем файл ----------------
call Close_file
;---открываем файл с помощью функции "создания"
LEA DX,File_to ;DS:DX указывают на путь к файлу
MOV CX,0 ;атрибуты файлы (здесь обычные)
MOV AH,3CH ;номер функции
INT 21H ;открываем файл
jc Error_file ;Ошибка открытия файла?
MOV Handle1,AX ;запоминаем номер файла
;---записываем в файл 16 байтов
MOV AH,40H ;номер функции
MOV BX,Handle1 ;номер файла в BX
MOV CX,10h ;число байт, которые надо записать
LEA DX,mas_w ;DS:DX указывают на буфер данных
INT 21H ;записываем данные
JC Out_prog ;проверка на ошибки
CMP CX,10h ;и их обработка
JNE Out_prog ;
mov ah,3Eh ;Закрываем файл
mov bx,Handle1
int 21h
mov dx,offset Mess_ok
Out_prog:
mov ah,9
int 21h
int 20h ;Выходим из программы
; ---------- Не смогли найти / открыть файл -----------------
Error_file:
mov dx,offset Mess_error
jmp Out_prog
; === Процедуры (подпрограммы) ===
; --- Открытие файла ---
Open_file proc
;процедура Open_file - открытие файла
;На входе: dx - адрес с именем файла
cmp Handle,0FFFFh
jne Quit_open
mov ax,3D00h
int 21h
mov Handle,ax
ret
Quit_open:
stc
ret
Handle dw 0FFFFh
Open_file endp
; --- Закрытие файла ---
Close_file proc
mov ah,3Eh
mov bx,Handle
int 21h
ret
Close_file endp
; === Данные ===
Handle1 dw 0
File_from db 'bukva04e.bmp',0
Mess_error db 'No open (find) file '
Mess_ok db 'Data from memory is writed in file succesfully!$'
File_to db 'file_to.txt',0, '$'
mas_w label word
rept 10
dw 0000h
endm
Finish equ $ ;Метка конца программы
CSEG ends
end Begin
Анализ
Поскольку данные считываются в 16-ричном виде из памяти и затем выводятся в новый
текстовый файл, то естественно, что они не могут отобразиться затем правильно на экране
при чтении этого нового файла. Следовательно, предварительно, перед помещением данных
из памяти в новый файл их надо конвертировать в ASCII-код. Тогда в новом файле мы
увидим дамп памяти.
Назад |
Начало урока |
Вверх |
Вперед
Содержание