Нужна помощь в чтении / записи данных на и с дискеты - PullRequest
0 голосов
/ 24 сентября 2019

В настоящее время я работаю над операционной системой (ничего серьезного), и я хотел бы иметь какую-то форму пользовательской системы, но для этого мне нужно иметь возможность записывать и читать мои данные (например, переменные) вдискета, на которой он находится

Я уже пытался использовать int 0x13 / ah = 0x02 и 0x03, но я просто не могу заставить его работать

writeDisk.asm:

writeDisk:
    pusha
    mov ah, 0x03
    mov dl, 0
    mov ch, 0
    mov dh, 0

    push bx
    mov bx, 0
    mov es, bx
    pop bx
    mov bx, 0x7c00 + 512

    int 0x13

    jc wdisk_error
    popa
    ret

    wdisk_error:
        mov si, wdisk_msg_err
        call printf

        jmp $

readDisk.asm тоже самое, но с 0x02 вместо 0x03

main.asm:

[org 0x7c00]

; Print message
mov si, msg_0
call printf

; Reading from sector 2
mov al, 1
mov cl, 2
call readDisk
jmp debug_label

jmp $

%include "./printf.asm"
%include "./readDisk.asm"
%include "./writeDisk.asm"

; Variables
msg_0:         db "Loaded in 16-bit Real Mode to memory location: 0x7c00.", 0x0a, 0x0d, 0
rdisk_msg_err: db "Error Loading Disk.", 0x0a, 0x0d, 0
rdisk_msg_suc: db "Disk Load Successfull",0x0a, 0x0d, 0
wdisk_msg_err: db "Error Writing to Disk", 0x0a, 0x0d, 0
wdisk_msg_suc: db "Write to Disk Successfull", 0x0a, 0x0d, 0

; Debug variable
testByte db 1

; Padding and magic number
times 510-($-$$) db 0
dw 0xaa55

debug_label:
    mov si, rdisk_msg_suc
    call printf

    mov ah, 0x0e
    mov al, byte [testByte]
    int 0x10

    mov byte [testByte], 2

    ; Writing to sector 2
    mov al, 1
    mov cl, 2
    call writeDisk

    mov si, wdisk_msg_suc
    call printf

    mov ah, 0x0e
    mov al, byte [testByte]
    int 0x10

    jmp $

; Padding
times 512 db 0

Когда я пишу testByte на экран ...хочу, чтобы каждый раз, когда я это записывал, он менялся, а затем, если я перезагружу ОС, он будет таким же.Но это остается другим.Итак, как мне сохранить значение testByte?

Я также проверил, получаю ли я какие-либо коды ошибок при записи / чтении, но он говорит, что все в порядке.

(Также ... Яиспользую NASM для компиляции и Virtualbox для тестирования)

...