Das org ist nur eine Anweisung für den Compiler:
Angenommen dein Kernel liegt an Adresse 0x1000:0x0
Dann musst du org 0x0 schreiben, weil dein Kernel an Offset 0 beginnt.
Allerdings musst du die Segmentregister auf den Wert 0x1000 setzen.
Sollte dein Kernel jedoch bei 0x1000:0x10 beginnen, dann musst du
org 0x10 schreiben.
Dann weiß der Assembler, das er zu jeder Variablenadresse 0x10 addieren muss.
Weil der Assembler standartmäßig davon ausgeht, das der Code am Offset 0 beginnt und errechnet den Offset der Variblen anhand der Stelle an der sich die Variable in der fertig compilierten Datei befindet.
Angenommen ganz am anfang der compilierten datei wäre eine Variable, dann hätte diese die Adresse 0x0.
Wenn dein Kernel jedoch an Offset 0x10 geladen ist, dann weiß der Assembler mit "org 0x10" das er zu der Adresse 0 noch 0x10 addieren muss. Somit stimmt die Adresse deiner Variablen dann wieder im Speicher.