| Глава 1 | стр 7 |
Finish equ $ ;Метка конца программы
Эта программа более компактна, чем предыдущая, так как не выводится сообщения
об успешном завершении и не используется массив, для хранения скачанных байт.
Байты из файла скачаиваются в память сразу за кодом программы, который заканчивается
знаком $.
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,40h ;сколько байт будет считано
mov dx,offset Finish ;! Адрес, куда будут читаться данные
int 21h
; ------------- Закроем файл ----------------
call Close_file
; ---------- Не смогли найти / открыть файл -----------------
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
Finish equ $ ;Метка конца программы
CSEG ends
end Begin
Вопрос:
Что в общем случае должно быть на входе процедуры Close_file ?
Назад |
Начало урока |
Вверх |
Вперед
Содержание