Я не верю, что BIOS будет поддерживать правильный стек для вас. Таким образом, вы должны установить стек самостоятельно в любой имеющейся у вас памяти. Моя общая последовательность запуска в загрузчиках выглядит так:
[BITS 16]
[ORG 0x7C00]
xor ax,ax ;AX=0
mov ds,ax
mov es,ax ;can be omitted
mov ss,ax
mov sp,0x7000 ;or replace with some other nice valid piece of memory
jmp word 0:begin ;BIOSes are sometimes buggy and load you initially with CS=7C0
begin:
;....
NASM не делает ничего, кроме того, что вы говорите. Это точка использования сборки. Каждая строка кода сборки имеет соотношение кодов операций 1: 1, выполняемых компьютером. Таким образом, если BIOS не устанавливает стек для вас, и нигде в коде сборки вы не устанавливаете стек, то стек будет в недопустимом состоянии. Nasm не будет вставлять магический код для настройки стека.