نمایش نتایج 1 تا 4 از 4

نام تاپیک: چرا این بوت لودر بوت نمیشه

  1. #1
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    چرا این بوت لودر بوت نمیشه

    سلام من یک بوت لودر در اسمبلی نوشتم و میخوام یک کرنلی که تو سی نوشته شده رو به حافظه لود کنه ولی این بوت لودر در Qemu بوت نمیشه
    اینم سورس بوت لودر

    Bits 16
    jmp Main
    ;in = -. out= -

    convert_sector:
    push bx
    push ax
    mov bx, ax
    mov dx, 0
    div WORD [sectorspertrack]
    add dl, 01h
    mov cl, dl
    mov ax, bx
    mov dx, 0
    div WORD [sectorspertrack]
    mov dx, 0
    div WORD [sides]
    mov dh, dl
    mov ch, al
    pop ax
    pop bx
    mov dl, BYTE [bootdrive]
    ret

    sectorspertrack dw 18
    sides dw 0

    reset_floppy:
    mov ah, 0
    mov dl, BYTE[bootdrive]
    int 13h
    jmp load_root

    print:
    lodsb
    cmp al, 0
    je Done
    mov ah, 0eh
    int 10h
    jmp print

    Done:
    ret

    Main:
    cli
    mov ax, 0x0000
    mov ss, ax
    mov sp, 0xFFFF
    sti

    mov ax, 07C0h
    mov ds, ax
    mov es, ax

    mov [bootdrive], dl


    mov bx, buffer
    mov cl,2
    mov ch,0
    mov dh,1
    mov ah,2
    mov al,14
    pusha

    load_root:
    int 13h
    jnc loaded_root
    call reset_floppy
    jmp load_root

    loaded_root:
    popa
    mov di, buffer
    mov cx, 224
    mov ax, 0
    search_loop:
    push cx
    pop dx
    mov si, filename
    mov cx, 11
    rep cmpsb
    je found_file
    add ax, 32
    mov di, buffer
    add di, ax
    push dx
    pop cx
    loop search_loop
    int 18h


    found_file:
    mov ax, WORD [di+15]
    mov WORD [FirstSector], ax

    mov bx, buffer
    call convert_sector
    mov ah, 2
    mov al, 9
    pusha
    load_fat:
    int 13h
    jnc loaded_fat
    call reset_floppy
    jmp load_fat

    loaded_fat:
    mov ah, 2
    mov al, 1
    push ax

    load_file_sector:
    mov ax, WORD [FirstSector]
    mov ax, 31
    call convert_sector
    mov ax, 2000h
    mov es, ax
    mov bx, WORD [pointer]

    pop ax
    push ax

    int 13h
    jnc calculate_next_sector
    call reset_floppy
    jmp load_file_sector

    calculate_next_sector:
    mov ax, [FirstSector]
    mov dx, 0
    mov bx, 6
    mul bx
    mov bx, 4
    div bx
    mov si, buffer
    mov si, ax
    mov ax, WORD [si]

    or dx, dx
    jz even

    odd:
    shr ax, 4
    jmp short next_sectors_caculate

    even:
    and ax, 0FFFh

    next_sectors_caculate:
    mov WORD [FirstSector], ax
    cmp ax, 0FF8h
    jae end
    add WORD [pointer], 512
    jmp load_file_sector

    end:
    pop ax
    mov dl, BYTE [bootdrive]
    jmp 2000h:0000h


    cli
    hlt

    bootdrive db 0
    msg db "Hello world!", 0
    filename db "KERNEL BIN"
    FirstSector dw 0
    pointer dw 0


    times 510-($-$$) db 0

    dw 0xAA55

    buffer: ;byte 513




    از این دستورت برای کامپایل بوت لودر و اجرای اون روی Qemu استفاده میکنم
    nasm -f bin boot.asm -o boot.bin


    dd status=noxfer conv=notrunc if=boot.bin of=TanzadehOS.flp


    mkdir tmp-loop && mount -o loop -t vfat Tanzadeh-droid.flp tmp-loop && cp Kernel.bin tmp-loop/


    [CODE]umount tmp-loop/CODE]

    qemu -fda TanzadehOS.flp

  2. #2

    نقل قول: چرا این بوت لودر بوت نمیشه

    از چه سیستم عاملی استفاده میکنید؟
    اگر از اوبونتو استفاده میکنید، qemu-system رو با qemu جایگزین کنید، شاید کار بده.

  3. #3
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    نقل قول: چرا این بوت لودر بوت نمیشه

    نقل قول نوشته شده توسط prpe26 مشاهده تاپیک
    از چه سیستم عاملی استفاده میکنید؟
    اگر از اوبونتو استفاده میکنید، qemu-system رو با qemu جایگزین کنید، شاید کار بده.
    نه مشکل حل نشد

  4. #4
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    نقل قول: چرا این بوت لودر بوت نمیشه

    خودم این مشکل رو حل کردم

    کد درست این مشه

    Bits 16
    org 0xc700


    jmp Main
    ;in = -. out= -

    convert_sector:
    push bx
    push ax
    mov bx, ax
    mov dx, 0
    div WORD [sectorspertrack]
    add dl, 01h
    mov cl, dl
    mov ax, bx
    mov dx, 0
    div WORD [sectorspertrack]
    mov dx, 0
    div WORD [sides]
    mov dh, dl
    mov ch, al
    pop ax
    pop bx
    mov dl, BYTE [bootdrive]
    ret

    sectorspertrack dw 18
    sides dw 0

    reset_floppy:
    mov ah, 0
    mov dl, BYTE[bootdrive]
    int 13h
    jmp load_root

    print:
    lodsb
    cmp al, 0
    je Done
    mov ah, 0eh
    int 10h
    jmp print

    Done:
    ret

    Main:
    cli
    mov ax, 0x0000
    mov ss, ax
    mov sp, 0xFFFF
    sti

    mov ax, 07C0h
    mov ds, ax
    mov es, ax

    mov [bootdrive], dl


    mov bx, buffer
    mov cl,2
    mov ch,0
    mov dh,1
    mov ah,2
    mov al,14
    pusha

    load_root:
    int 13h
    jnc loaded_root
    call reset_floppy
    jmp load_root

    loaded_root:
    popa
    mov di, buffer
    mov cx, 224
    mov ax, 0
    search_loop:
    push cx
    pop dx
    mov si, filename
    mov cx, 11
    rep cmpsb
    je found_file
    add ax, 32
    mov di, buffer
    add di, ax
    push dx
    pop cx
    loop search_loop
    int 18h


    found_file:
    mov ax, WORD [di+15]
    mov WORD [FirstSector], ax

    mov bx, buffer
    call convert_sector
    mov ah, 2
    mov al, 9
    pusha
    load_fat:
    int 13h
    jnc loaded_fat
    call reset_floppy
    jmp load_fat

    loaded_fat:
    mov ah, 2
    mov al, 1
    push ax

    load_file_sector:
    mov ax, WORD [FirstSector]
    mov ax, 31
    call convert_sector
    mov ax, 2000h
    mov es, ax
    mov bx, WORD [pointer]

    pop ax
    push ax

    int 13h
    jnc calculate_next_sector
    call reset_floppy
    jmp load_file_sector

    calculate_next_sector:
    mov ax, [FirstSector]
    mov dx, 0
    mov bx, 6
    mul bx
    mov bx, 4
    div bx
    mov si, buffer
    mov si, ax
    mov ax, WORD [si]

    or dx, dx
    jz even

    odd:
    shr ax, 4
    jmp short next_sectors_caculate

    even:
    and ax, 0FFFh

    next_sectors_caculate:
    mov WORD [FirstSector], ax
    cmp ax, 0FF8h
    jae end
    add WORD [pointer], 512
    jmp load_file_sector

    end:
    pop ax
    mov dl, BYTE [bootdrive]
    jmp 2000h:0000h


    cli
    hlt

    bootdrive db 0
    msg db "Hello world!", 0
    filename db "KERNEL BIN"
    FirstSector dw 0
    pointer dw 0


    times 510-($-$$) db 0

    dw 0xAA55

    buffer: ;byte 513




تاپیک های مشابه

  1. سوال: چرا این ماجول ها کامپایل نمیشه
    نوشته شده توسط azadich در بخش Access
    پاسخ: 1
    آخرین پست: یک شنبه 31 اردیبهشت 1391, 23:41 عصر
  2. ساخت بوت لودر برای حافظه های فلش
    نوشته شده توسط reza10203045 در بخش توسعه‌ی هسته‌ی سیستم عامل
    پاسخ: 4
    آخرین پست: پنج شنبه 07 آبان 1388, 01:44 صبح
  3. سوال: نوشتن بوت لودر
    نوشته شده توسط mehdicpp در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 2
    آخرین پست: جمعه 27 دی 1387, 12:24 عصر
  4. نصب دو توزیع مبتنی بر بوت لودر lilo
    نوشته شده توسط mohsenhvac در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 0
    آخرین پست: شنبه 06 مهر 1387, 05:50 صبح
  5. چرا این جدول 100% نمیشه ؟
    نوشته شده توسط shahab_ksh در بخش طراحی وب (Web Design)
    پاسخ: 3
    آخرین پست: سه شنبه 08 آبان 1386, 17:57 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •