ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »
