Пишу программу для форматирования HDD, только средства биос, решил делать так
- Проверить сколько головок и секторов на HDD ( Тут и зависает... ), 08h,13h
- Цикл:
- Добавлять по 1, к дорожке
- Если дорожки закончатся следующая головка тоже, 1 к головке, обнюляю дорожку
- Форматирую через 05h,int 13h
- Цикл снова
Ну и код
#make_boot#
org 7c00h
use16
jmp start
start_p:
mov ah,14
xor bl,bl
mov bx,run
call puts
ret
quit:
mov ah,0
int 16h
int 19h
puts:
mov al,[bx]
test al,al
jz quit
inc bx
int 10h
jmp puts
end1:
mov ah,14
xor bl,bl
mov bx,finish
call puts
formate:
mov dl,80h
mov ah,05h
int 13h
ret
new_head:
mov dh,[a]
inc dh
mov [a],dh
mov ch,0
jmp p0
start:
call start_p
mov dl,80h
mov ah,08h
int 13h Зависает где-то тут ошибка возможно то что не нашло HDD хотя он есть и, код с таким же 80h но чтение работает
mov al,'>'
mov ah,0x0E
mov bh,0
int 10h
push bx
push cx
mov [a],dh
mov [b],ch
mov dl,0
mov ch,0
p0:
push dx
push cx
call formate
inc ch
mov ah,[b]
cmp ch,ah
jz new_head
mov ah,[a]
cmp bh,ah
jz end1
pop cx
pop dx
jmp p0
finish db 0Ah,0Dh,'HDD formated',0Ah,0Dh,0
run db 0Ah,0Dh,'For start formate HDD press any key',0Ah,0Dh,0
a db 255
b db 255
INT 19h