| Глава 1 | стр 6 |
Ниже показана программа, которая считала 16 байт из графического файла bukva04e.bmp
в память компьютера. Данные из файла скачиваем в заранее подготовленный массив mas_w
в памяти. На рисунке для наглядности выделены первые 4 байта, скачанные из файла в память.
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin:
; ------------- Откроем файл ----------------
mov dx,offset File_name
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
; ------------ Выводим сообщение --------------
mov ah,9
mov dx,offset Mess_ok
int 21h
ret
; ---------- Не смогли найти / открыть файл -----------------
Error_file:
mov ah,2
mov dl,7
int 21h
ret
; === Процедуры (подпрограммы) ===
; --- Открытие файла ---
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
; === Данные ===
File_name db 'bukva04e.bmp',0
Mess_ok db 'All is very good!', 0Ah, 0Dh, '$'
mas_w label word
rept 10
dw 0000h
endm
Finish equ $ ;Метка конца программы
CSEG ends
end Begin
Инструкция :
mas_w label word
rept 10
зарезервировала 10 слов в памяти компа. Выглядят эти 10 слов в просмотровщике
так: 00 00 00 00 00 00 00 00 00 00.
Интересно, что инструкция: mov cx,10h которая определяет сколько байт будет считано.
Программа записывает в память только как раз 16 слов: 42 4D 12 04 и тд .
Адрес в памяти, куда должны скачиваться данные можно указать и так:
mov dx,offset Finish ;! Адрес, куда будут читаться данные
Пример применения данной инструкции смотрите на следующей странице.
Интересно, что массив в памяти инициированный нулями располагается сразу
за основным кодом программы и может быть любой (разумной) длины.
Такой способ скачивания в массив хорош тем, что мы можем сразу после
скачивания брать данные из этого массива и с ними работать.
Этот опыт нам подсказывает, что можно скачать данные из текстового файла
не только в память компа (в 16-ричном виде), но и в новый текстовый файл
формата txt. Так, что байты будут представлены в 16-ричном виде как и в
памяти компьютера. Тогда можно будет работать над этим текстовым файлом
изучая его.
Назад |
Начало урока |
Вверх |
Вперед
Содержание