ВУЗ:
Составители:
146
; Обработка команд DOS
; Команда 0: Инициализация
initialization: call bell1 ; Включение звука
call initial ; Вывод сообщения
push cs
pop dx ; DX = CS
; Определение конца RAM-диска
lea ax,cs:start_disk ;Отн.нач.адр.RAM-диска
mov cl,4 ; Деление на 16
ror ax,cl ; Отн.нач.параграф RAM-диска
add dx,ax ; Абсолютн. нач. парагр. диска
mov cs:disk,dx ;Сохранение абс. нач. параграфа
add dx,ram_par ; + размер диска в параграфах
; Возврат в DOS адреса конца
mov es:[bx].rh0_brk_ofs,0 ; Смещение = 0
mov es:[bx].rh0_brk_seg,dx ; Семент
; Возврат числа устройств в блоковом устройстве
mov es:[bx].rh0_nunits,1 ; 1 диск
; Возврат адреса ВРВ (одного)
lea dx,bpb_ptr ; Адрес указателя
mov es:[bx].rh0_bpb_tbo,dx ; Смещение
mov es:[bx],rh0_bpb_tbs,cs ; Сегмент
; Инициализация загрузочной записи, FAT и каталога
push ds ; CALC портит DS
mov cs:start,0 ; Нач. сектор = 0
mov ax,cs:res_cnt ; Кол-во зарезерв. сект.
mov cs:total,ax ; Кол-во передав. сект.
call calc ; Вычисл. физич. параметров
mov al,0 ; Чем заполнять
push ds ; DS – начало RAM-диска
pop es
mov di,si ; DI = SI = 0
rep stosb ; Заполн. зарезерв. сект. нулями
pop ds ; Восстановление DS = CS
; Загрузочная запись
mov es,cs:disk ; Начальный сегмент диска
xor di,di
lea si,cs:boot_rec ;Смещение загруз. записи
mov cx,30 ;Кол-во копируемых байтов
rep movsb ;Копирование
; Создать 1 FAT
mov cs:start,1 ; Логич. сектор 1
mov cs:total,1 ; Не имеет значения
call calc ; Установка DS:SI
mov ds:word ptr [si],0feffh ;Зап. в FAT дес криптора
mov ds:word ptr 1[si],0ffffh ; носи теля FEh и 5 байтов FFh
mov ds:word ptr 3[si],0ffffh
call bell2 ; Выключение звука
; Восстановление ES:BX
mov ax,cs:rh_seg
146 ; Обработка команд DOS ; Команда 0: Инициализация initialization: call bell1 ; Включение звука call initial ; Вывод сообщения push cs pop dx ; DX = CS ; Определение конца RAM-диска lea ax,cs:start_disk ;Отн.нач.адр.RAM-диска mov cl,4 ; Деление на 16 ror ax,cl ; Отн.нач.параграф RAM-диска add dx,ax ; Абсолютн. нач. парагр. диска mov cs:disk,dx ;Сохранение абс. нач. параграфа add dx,ram_par ; + размер диска в параграфах ; Возврат в DOS адреса конца mov es:[bx].rh0_brk_ofs,0 ; Смещение = 0 mov es:[bx].rh0_brk_seg,dx ; Семент ; Возврат числа устройств в блоковом устройстве mov es:[bx].rh0_nunits,1 ; 1 диск ; Возврат адреса ВРВ (одного) lea dx,bpb_ptr ; Адрес указателя mov es:[bx].rh0_bpb_tbo,dx ; Смещение mov es:[bx],rh0_bpb_tbs,cs ; Сегмент ; Инициализация загрузочной записи, FAT и каталога push ds ; CALC портит DS mov cs:start,0 ; Нач. сектор = 0 mov ax,cs:res_cnt ; Кол-во зарезерв. сект. mov cs:total,ax ; Кол-во передав. сект. call calc ; Вычисл. физич. параметров mov al,0 ; Чем заполнять push ds ; DS – начало RAM-диска pop es mov di,si ; DI = SI = 0 rep stosb ; Заполн. зарезерв. сект. нулями pop ds ; Восстановление DS = CS ; Загрузочная запись mov es,cs:disk ; Начальный сегмент диска xor di,di lea si,cs:boot_rec ;Смещение загруз. записи mov cx,30 ;Кол-во копируемых байтов rep movsb ;Копирование ; Создать 1 FAT mov cs:start,1 ; Логич. сектор 1 mov cs:total,1 ; Не имеет значения call calc ; Установка DS:SI mov ds:word ptr [si],0feffh ;Зап. в FAT дес криптора mov ds:word ptr 1[si],0ffffh ; носи теля FEh и 5 байтов FFh mov ds:word ptr 3[si],0ffffh call bell2 ; Выключение звука ; Восстановление ES:BX mov ax,cs:rh_seg
Страницы
- « первая
- ‹ предыдущая
- …
- 144
- 145
- 146
- 147
- 148
- …
- следующая ›
- последняя »