Глава 10
Вверх
Ниже приведен код программы с пояснениями ее работы.
CSEG segment
Begin:
mov bx,ax
call Close_file
; ------------ Выводим сообщение --------------
; ---------- Не смогли найти / открыть файл -----------------
; === Процедуры (подпрограммы) ===
; --- Открытие файла ---
; --- Закрытие файла ---
; === Данные ===
File_name db 'prog09.com',0
Finish equ $ ;Метка конца программы
CSEG ends
Назад |
Начало урока |
Вверх |
Вперед
10.1 Программа из прошлой главы
В главе 9 наша программа перезагружала сама себя (загружалась поверх своего кода) в оперативной памяти. Мы не зря просили вас присвоить ей имя Prog09.asm. Если программа не найдет файл с данным именем, то она просто завершит работу, при этом издаст звуковой сигнал. Ничего сложного в ней нет. Эта программа наглядно показывает, что в ассемблере можно проделывать невероятные вещи, которые недоступны языкам высокого уровня.
;-------------------------------------
; Prog10.asm
;-------------------------------------
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
mov dx,offset File_name
call Open_file ;Открываем файл
jc Error_file ;Ошибка?
; ------------- Открыли файл ----------------
mov ah,3Fh ;Функция чтения файла
mov cx,offset Finish-100h
mov dx,offset Begin ;! Адрес, куда будут читаться данные
int 21h
; ------------- Прочитали файл ----------------
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
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
Mess_ok db 'Все нормально!', 0Ah, 0Dh, '$'
end Begin
Содержание