Author Topic: MrScrubDetectorForumRebatch389  (Read 76 times)

Offline TOperatingSystem

  • New Member
  • Posts: 1
MrScrubDetectorForumRebatch389
« on: September 12, 2020, 04:05:28 AM »
So, when I try to compile my code
Code: [Select]
section .boot
bits 16
global boot
boot:
mov ax, 0x2401
int 0x15

mov ax, 0x3
int 0x10

mov [disk],dl

mov ah, 0x2    ;read sectors
mov al, 6      ;sectors to read
mov ch, 0      ;cylinder idx
mov dh, 0      ;head idx
mov cl, 2      ;sector idx
mov dl, [disk] ;disk idx
mov bx, copy_target;target pointer
int 0x13
cli
lgdt [gdt_pointer]
mov eax, cr0
or eax,0x1
mov cr0, eax
mov ax, DATA_SEG
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
jmp CODE_SEG:boot2
gdt_start:
dq 0x0
gdt_code:
dw 0xFFFF
dw 0x0
db 0x0
db 10011010b
db 11001111b
db 0x0
gdt_data:
dw 0xFFFF
dw 0x0
db 0x0
db 10010010b
db 11001111b
db 0x0
gdt_end:
gdt_pointer:
dw gdt_end - gdt_start
dd gdt_start
disk:
db 0x0
CODE_SEG equ gdt_code - gdt_start
DATA_SEG equ gdt_data - gdt_start

times 510 - ($-$$) db 0
dw 0xaa55
copy_target:
bits 32
hello: db "Hello more than 512 bytes world!!",0
boot2:
mov esi,hello
mov ebx,0xb8000
.loop:
lodsb
or al,al
jz halt
or eax,0x0F00
mov word [ebx], ax
add ebx,2
jmp .loop
halt:
mov esp,kernel_stack_top
extern kmain
call kmain
cli
hlt

section .bss
align 4
kernel_stack_bottom: equ $
resb 16384 ; 16 KB
kernel_stack_top:
And whenver I compile with nasm -f bin boot.asm -o boot.bin, I get boot.asm:77: error: binary output format does not support external references
Anyway to fix this? Thanks, T.M.
« Last Edit: September 17, 2020, 08:25:07 PM by TOperatingSystem »

Offline Frank Kotler

  • NASM Developer
  • Hero Member
  • *****
  • Posts: 2446
  • Country: us
Re: error: binary output format does not support external references
« Reply #1 on: September 12, 2020, 04:56:21 AM »
Hi  TOperatingSystem,

Welcome to the forum.

To remove the error message, remove the external reference, namely "global boot".

Best,
Frank