2017-10-15 2 views
-1

내 기본 부트 로더에서 일부 기본 (.bas) 파일을로드해야합니다.어셈블리 운영 체제에서 .BAS 파일을로드하는 방법

내 부팅 로더는 매우 기본이며, 약간의 텍스트를 표시하고 .bas 파일을 메모리에로드하고 실행하는 것으로되어 있습니다.

(나는 어셈블리에 아주 새로운 오전, 당신은 몇 가지를 설명해야 할 수도 있으므로 완전히 아직 이해하지 않습니다.) 여기

지금까지 내 간단한 코드입니다 (이것은 않는 모든 텍스트를 표시입니다 .) : 누군가가 나를 도울 수 있다면 감사하겠습니다

BITS 16 

start: 
    mov ax, 07C0h  
    add ax, 288  
    mov ss, ax 
    mov sp, 4096 

    mov ax, 07C0h  
    mov ds, ax 


    mov si, text_string 
    call print_string 

    jmp $   


    text_string db 'MyOS BootLoader...', 10, 13 
       db 'Looking For Kernel..., 10, 13 




    ; *** INSERT .BAS LOADING CODE HERE :D *** 

print_string:   
    mov ah, 0Eh  

.repeat: 
    lodsb   
    cmp al, 0 
    je .done   
    int 10h   
    jmp .repeat 

.done: 
    ret 


    times 510-($-$$) db 0 
    dw 0xAA55  

) (내 코드가 마이크 손더스에 의해 MikeOS 중 기반 (here을 발견). :)

+3

이 질문은 너무 광범위합니다. 파일 시스템에서 읽어야합니까? 어떤 파일 시스템 또는 파일 시스템없이 특정 섹터에 BAS 파일을 배치 할 것입니까? 이 코드를 부트 섹터에 모두 넣지는 않을 것입니다. –

답변

0

내 부팅 로더는 매우 기본이며, 약간의 텍스트를 표시하고 .bas 파일을 메모리에로드하고 실행하는 것으로되어 있습니다.

생각보다 어렵습니다. BASIC 프로그램을 실행하려면 통역사가 필요합니다. ROM에 BASIC이 포함 된 정품 IBM PC (1980 년 이후로 사용되지는 않음)를 사용하는 경우가 아니면 부팅 섹터에 통역사를 포함시켜야합니다. (맞지 않을 것입니다.)

COM 파일과 같은 다른 유형의 실행 파일을로드하는 것이 좋습니다.

+0

흥미 롭습니다. MikeOS는 어떻게 든 그것을했다. – Gigatero

+0

'.bas'대신 '.com'을 사용할 때 나는 많은 도움을 받았다. – Gigatero

+3

@Gigatero MikeOS는 기본 인터프리터를 포함하고있다. 약 4200 줄의 코드를 차지합니다 - 전체 MikeOS 코드베이스의 절반 이하입니다. – duskwuff

관련 문제