Hallo,
Ich komm mit externen Unterprogrammen unter NASM einfach nicht zurecht. Um ein externes Unterprogramm aufzurufen, muss man es mittels GLOBAL für andere Module zugänglich machen. Dann kann mittels EXTERN darauf zugegriffen werden, so die Hilfe.
Ein externes Unterprogramm für andere Module via GLOBAL zugänglich zu machen ist kein Problem.
Aber das Aufrufen mit NASM via "EXTERN" funktioniert nicht.
Unterprogramm:
Hauptprogramm:
Beim Kompilieren des Hauptprogramms kommen folgende Fehler:
"Binary output format does not support external references"
"Binary output format does not support segment base references"
Laut NASM-Hilfe (unter Help->Programming in NASM->Expressions->SEG) kann man ein Unterprogramm mittels CALL FAR routine oder CALL SEG routine:routine aufrufen, was jedoch nicht funktioniert.
Wie kann man ein externes Unterprogramm in NASM aufrufen ?
Vielen Dank,
bsc
Ich komm mit externen Unterprogrammen unter NASM einfach nicht zurecht. Um ein externes Unterprogramm aufzurufen, muss man es mittels GLOBAL für andere Module zugänglich machen. Dann kann mittels EXTERN darauf zugegriffen werden, so die Hilfe.
Ein externes Unterprogramm für andere Module via GLOBAL zugänglich zu machen ist kein Problem.
Aber das Aufrufen mit NASM via "EXTERN" funktioniert nicht.
Unterprogramm:
Code: [Auswählen]
GLOBAL print
print:
lodsb
cmp al, 0
je print_end
mov ah, 0x0E
int 0x10
jmp print
print_end:
retHauptprogramm:
Code: [Auswählen]
EXTERN print
org 0x7c00
jmp start
hello db "Hello World",0
start:
xor ax, ax
mov ds, ax
mov si, hello
call far print
Beim Kompilieren des Hauptprogramms kommen folgende Fehler:
"Binary output format does not support external references"
"Binary output format does not support segment base references"
Laut NASM-Hilfe (unter Help->Programming in NASM->Expressions->SEG) kann man ein Unterprogramm mittels CALL FAR routine oder CALL SEG routine:routine aufrufen, was jedoch nicht funktioniert.
Wie kann man ein externes Unterprogramm in NASM aufrufen ?
Vielen Dank,
bsc

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken
Gespeichert





Welchen Emulator benutzt du? Der einzige, der wirklich einen PC emulieren kann (oder es versucht), ist MAME. Der nutzt das originale PC-BIOS.
. Mir sind keine universellen Bootloader für 8086er bekannt, was auch daran liegt, dass das ursprüngliche PC-BIOS keine Festplatten kannte (die kamen erst mit dem XT hinzu) und jedes Betriebssystem seinen eigenen Bootcode benutzt. Ich kenne nur Bootmanager/Bootselektoren, wie z.B. den von