Пишу МиниОС на asm, не работает int 13h?

Пишу Мини-Программу для запуска с биоса
Все работает есть загрузчик, ядро

Хотелось бы загрузить 6 сектор( дискеты ) уже из под ядра которое на дискете и пригнуть на код который загрузил вот тут то и проблема, читает делает прыжок зависает

org 500h
use16 

push dx   
mov [n],dl


        mov ax,0000h
        mov es,ax
        mov bx,test1
        mov ch,0                   
        mov dh,0  
        mov cl,02h         
        mov dl,80h        
        mov al,01h         
        mov ah,03h
        int 13h         
              
jmp start    





e: 
ret

endl:   
mov ah,14
xor bl,bl
mov bx,nl
call puts
jmp e


buff_out:
mov ah,14
xor bl,bl
mov bx,buff
call puts
jmp e   

del:      
        mov [buff+si],al
        dec si
        mov ah,0x0E
        mov bh,0
        mov al,8
        int 10h
        mov ah,0x0E
        mov bh,0
        mov al,0
        int 10h
        mov ah,0x0E
        mov bh,0
        mov al,8
        int 10h
        jmp com2_1   

            

com2_1:
        mov ah,0
        int 16h
        cmp ah,1Ch
        jz com2   
        cmp ah,0Eh
        jz del
        mov [buff+si],al
        inc si
        mov ah,0x0E  
        mov bh,0
        int 10h 
        jmp com2_1
com2_2:  
        mov ax,0000h
        mov es,ax
        mov bx,buff
        mov ch,0                   
        mov dh,0  
        mov cl,01h         
        mov dl,80h        
        mov al,01h         
        mov ah,02h
        int 13h 
        jmp com2
com2_3: 
        mov ax,0000h
        mov es,ax
        mov bx,buff
        mov ch,0                   
        mov dh,0  
        mov cl,01h         
        mov dl,80h        
        mov al,01h         
        mov ah,03h
        int 13h 
        jmp com2     
com2_4:
        mov ah,14
        xor bl,bl
        mov bx,buff
        call puts
        jmp com2    
com2_5: 
        mov ax,0000h
        mov es,ax
        mov bx,clr
        mov ch,0                   
        mov dh,0  
        mov cl,01h         
        mov dl,80h        
        mov al,01h         
        mov ah,03h
        int 13h 
        jmp com2 
        

com3_1:  
mov cl,1h
start1:                     
        mov ax,0000h
        mov es,ax
        mov bx,clr
        mov ch,0                   
        mov dh,0           
        mov dl,80h        
        mov al,01h         
        mov ah,03h
        int 13h
        inc cl 
        cmp cl,30h 
        jz p0
        jmp start1
               

puts:
mov al,[bx]
test al,al
jz e
inc bx
int 10h
jmp puts 

com1:    
        mov ah,14
        xor bl,bl
        mov bx,clr
        call puts
        jmp p0

com2:   
        mov si,0
        mov ah,14
        xor bl,bl
        mov bx,textE
        call puts
        mov ah,0
        int 16h
        cmp al,'1'
        jz com2_1
        cmp al,'2'
        jz com2_2
        cmp al,'3'
        jz com2_3
        cmp al,'4'
        jz com2_4  
        cmp al,'5'
        jz com2_5
        jmp p0  
 

com3:         
        mov ah,14
        xor bl,bl
        mov bx,HD
        call puts
        mov ah,0
        int 16h
        jz com3_1
        jmp p0
        

com4: 
        mov ax,0000h
        mov es,ax
        mov bx,clr
        mov ch,0                   
        mov dh,0           
        mov dl,80h
        mov cl,01h        
        mov al,01h         
        mov ah,03h
        int 13h
        mov ax,0000h
        mov es,ax
        mov bx,clr
        mov ch,0                   
        mov dh,0  
        mov cl,00h         
        mov dl,80h        
        mov al,01h         
        mov ah,03h
        int 13h  
        mov ah,14
        xor bl,bl
        mov bx,OSdel
        call puts
        jmp p0

com5: 
        mov ax,0000h
        mov es,ax
        mov bx,7c00h
        mov ch,0                   
        mov dh,0  
        mov cl,01h         
        mov dl,80h        
        mov al,01h         
        mov ah,02h
        int 13h 
        jmp 0000:7c00h

com6:
        mov ah,14
        xor bl,bl
        mov bx,creat
        call puts
        jmp p0          
com7:  
mov cl,2           
com7_0:
        mov ax,0000h
        mov es,ax
        mov bx,buff
        mov ch,0                   
        mov dh,0           
        mov dl,80h        
        mov al,01h         
        mov ah,02h
        int 13h 
        call buff_out
        call endl 
        mov ah,0
        int 16h
        cmp cl,5h
        jz com7_1
        add cl,1h
        jmp com7_0
        
com7_1: 
        mov al,'>'
        mov ah,0x0e
        int 10h 
        mov ah,0
        int 16h
        cmp al,'1'
        jz com7_2_1
        cmp al,'2'
        jz com7_2_1
        cmp al,'3'
        jz com7_2_1
        cmp al,'4'
        jz com7_2_1
        jmp p0     

com7_2_1:
        mov al,'>'
        mov ah,0x0e
        int 10h   
        pop dx
        call conv
        mov al,'>'
        mov ah,0x0e
        int 10h     
        mov dl,[n]
        mov ax,0000h
        mov es,ax
        mov bx,700h
        mov ch,0                   
        mov dh,0              
        mov al,01h         
        mov ah,02h
        int 13h    
        jmp 0000:0700h
        
        conv:
        cmp al,'1'
        jz conv1   
        cmp al,'2'
        jz conv2
        cmp al,'3'
        jz conv3
        cmp al,'4'
        jz conv4
        p4:
        ret
        
        conv1:
        mov cl,6
        jmp p4
        conv2:  
        mov cl,7 
        jmp p4
        conv3:  
        mov cl,8  
        jmp p4
        conv4:  
        mov cl,9
        jmp p4
        
        
        
        
         
        

        

com8:
       int 19h   
com0:
mov dl,[n]
mov ax,0000h
        mov es,ax
        mov bx,700h
        mov ch,0                   
        mov dh,0  
        mov cl,06h                 
        mov al,01h         
        mov ah,02h
        int 13h 
        jmp 0000:700h



       

   

start:
mov ah,14
xor bl,bl
mov bx,clr
call puts   
mov ah,14
xor bl,bl
mov bx,list
call puts
p0:  
mov ah,0
int 16h
cmp al,'1'
jz com1
cmp al,'2'
jz com2
cmp al,'3'
jz com3
cmp al,'4'
jz com4
cmp al,'5'
jz com5
cmp al,'6'
jz com6   
cmp al,'7'
jz com7
cmp al,'8'
jz com8
cmp al,'0'
jz com0       
jmp start

ret  

;; Data segment   
nl db 0Ah,0Dh,0
clr db 0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0Ah,0Dh,0      
list db 0Ah,0Dh,'1) Clear Screen',0Ah,0Dh,'2) Text Editor',0Ah,0Dh,'3) HDD clr',0Ah,0Dh,'4) Delete OS',0Ah,0Dh,'5) Boot HDD',0Ah,0Dh,'6) Creators',0Ah,0Dh,'7) File List',0Ah,0Dh,'8) Reboot WinCleaner2017',0Ah,0Dh,0 
creat db 0Ah,0Dh,'ASMcoder | NovaK',0Ah,0Dh,0     
HD db 0Ah,0Dh,'HDD 30 sectors cleared',0Ah,0Dh,0 
OSdel db 0Ah,0Dh,'OS was deleted',0Ah,0Dh,0  
textE db 0Ah,0Dh,0Ah,0Dh,'1) Print',0Ah,0Dh,'2) Load',0Ah,0Dh,'3) Save',0Ah,0Dh,'4) View',0Ah,0Dh,'5) Clear',0Ah,0Dh,0          
test1 db 'test',0
buff  db 255 
n db 0


Вот такое вот ядро, и отдельно код который не особо работает по моему ошибка мелочная но найти ее...
Тоесть там код такое если нажал 1 то читать сектор 6 из дискеты, строго не судите код я так ассемблер учу ( ОС писанием )
Вот это не работает
com7_2_1:
        mov al,'>'
        mov ah,0x0e
        int 10h   
        pop dx
        call conv
        mov al,'>'
        mov ah,0x0e
        int 10h     
        mov dl,[n]
        mov ax,0000h
        mov es,ax
        mov bx,700h
        mov ch,0                   
        mov dh,0              
        mov al,01h         
        mov ah,02h
        int 13h    
        jmp 0000:0700h
        
        conv:
        cmp al,'1'
        jz conv1   
        cmp al,'2'
        jz conv2
        cmp al,'3'
        jz conv3
        cmp al,'4'
        jz conv4
        p4:
        ret
        
        conv1:
        mov cl,6
        jmp p4
        conv2:  
        mov cl,7 
        jmp p4
        conv3:  
        mov cl,8  
        jmp p4
        conv4:  
        mov cl,9
        jmp p4


Спасибо кто пытался помочь или даже помог!
  • Вопрос задан
  • 467 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы