0

I have some code. for a bootloader. And I would like it if I had some functionality in the assembly code for loading more than 512 bytes from the bias. I obviously need this because I would like to incorporate C in the near/distant future, and I wouldn't dare begin to write C code targeting a 512 byte machine

By the way... I'm sorry for the amount of comments I have in my code... its still a little difficult for me to understand such strange low level key words and understand what they mean. sorry if the sheer amount of comments hurts anybodies eyes.

By the way, I would just like to mention how I looked everywhere and couldn't find any solutions to the issue at hand. I searched for like 5 hours and didn't find any data as to how to extend the amount of data I could get.

ORG 0x7c00 ; originate from the address given to you by the BIOS
BITS 16 ; only assemble assembly instructions in 16 bits

start:  
    mov si, message ; source index register 
    call print
print:
    mov bx, 0
.loop:
    lodsb ; loops character loading
    cmp al, 0 ; comparing al register to 0
    je .done ; jumping to the done sublabel ".done    "
    call print_char ; calling the print char routeine
    jmp .loop
.done:
    ret

print_char:
    mov ah, 0eh ; weird registers
    int 0x10 ; calling the bias
    ret ; return from subroutine

    jmp $ ; insure that it will keep jumping to itself to insure that you don't execute the data, or the signature on lines 12-13

message: db "Q29ydnVz", 0

times 510- ($ - $$) db 0 ; states that program must fill at least 510 bytes of data
dw 0xAA55 ; intel machines flip the bytes
Peter Cordes
  • 286,368
  • 41
  • 520
  • 731

0 Answers0