;В файле file.txt хранится следующая информация: DIR (команда MS DOS).
;Выполнить эту команду при запуске программы.
;(Для чтения файла использовать формулу 14)
.model tiny
.code
.startup
jmp start
;FCB для операции чтения файла
FCB: db 03h ;диск C
db 'file ' ;имя файла
db 'txt' ;расширение
dw 0 ;номер блока
RecSize dw 0 ;размер записи
dw 0,0 ;размер файла
dw 0 ;дата
db 10 dup (0) ;резерв
CurRec dw 0 ;блоковый номер записи
dw 0,0 ;файловый номер записи
;путь командного интерпретатора, которого будем запускать
command db 'c:\windows\system32\command.com',0
;строка параметров (первый байт - длина параметров)
parm db 6,'/c '
;сюда скопируем три первых байта (dir) из файла
comstr db ' ',0dh
;блок EPB для запуска command.com
EPB dw 0
comline dw 0, 0
FCB1 dw 0, 0
FCB2 dw 0, 0
sErrOpen db 'Open error$'
sErrRead db 'Read error$'
start:
lea dx, FCB ;открываем файл
mov ah, 0fh
int 21h
cmp al, 0
jne ErrorOpen ;проверка на ошибку
mov RecSize, 3 ;читаем 3 байта в DTA по адресу 80h
mov ah, 14h ;dx - открытый FCB
int 21h
cmp al, 0
jne ErrorRead ;проверка на ошибку
mov ah, 10h ;закрываем FCB
int 21h
;перед тем, как запустить command.com,
;необходимо урезать свою память
mov bx, 1000h ;оставляем себе 64к
mov ah, 4ah
int 21h
mov si, 80h ;адрес DTA (команда из файла)
lea di, comstr ;место в строке параметров
mov cx, 3 ;длина - 3 байта
rep movsb ;копируем
mov comline, offset parm ;вставляем в EPB длинный указатель
mov comline+2, cs ;на строку параметров
lea dx, command ;ds:dx - указатель на программу
lea bx, EPB ;es:bx - указатель на EPB
mov ax, 4b00h ;функция запуска программы
int 21h
Exit:
mov ax, 4c00h ;выход в ДОС
int 21h
;обработка ошибок
ErrorOpen:
lea dx, sErrOpen
jmp Print
ErrorRead:
lea dx, sErrRead
Print:
mov ah, 9
int 21h
jmp Exit
end
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.