OS(3) IPL開始時のスタックはどこ?

この前は IPL 開始時点での cs:ip を確認したが、ss:sp はどうなんだろ?と思って作ったIPLがこれ。
実行例はVirtualPC2004のもの。これだとIPLより下位側のメモリにあるので、IPLがつぶされることはないですね。

IPLソース

; 開始時点の cs:ip, ss:sp 表示
[org 0x7c00]

start:		call	next
next:		
		mov	ax, cs
		mov	ds, ax
		cld
		
; 実行開始時点の cs:ip 表示
		mov	si, msg_start
		call	puts
		
		mov	ax, cs		; CS
		call	put_AX
		mov	al, ':'
		call	putc

		pop	ax		; IP
		sub	ax, next - start
		call	put_AX
		call	put_CRLF

; 実行開始時点の ss:sp 表示
		mov	si, msg_stack
		call	puts
		mov	ax, ss		; SS
		call	put_AX
		mov	al, ':'
		call	putc
		mov	ax, sp		; SP
		call	put_AX
		call	put_CRLF

		jmp	$

msg_start:	db	'cs:ip = ', 0
msg_stack:	db	'ss:sp = ', 0

;========================================================================================
put_CRLF:	push	ax
		mov	al, 13
		call	putc
		mov	al, 10
		call	putc
		pop	ax
		ret

; Video BIOSを利用したASCIZ文字列出力
puts:		lodsb
		or	al, al
		jz	.@ret
		call	putc
		jmp	puts
.@ret:		ret

; 空白を出力
put_SPC:	push	ax
		mov	al, ' '
		call	putc
		pop	ax
		ret
;
; Video BIOSを利用した1文字出力
putc:		push	bx
		mov	ah, 0x0e
		mov	bx, 7		; 白
		int	0x10
		pop	bx
		ret
;
; AXレジスタを16進4桁で出力
put_AX:		push	ax
		push	cx
		mov	cx, 4
.@loop:		rol	ax, 4
		push	ax
		and	al, 0x0f	; 4ビットを取り出し
		add	al, '0'
		cmp	al, '9'
		jbe	.@disp
		add	al, 'A' - '9' - 1
.@disp:		call	putc
		pop	ax
		loop	.@loop
		pop	cx
		pop	ax
		ret
;
		times 510 - ($ - $$) db 0
		dw	0xaa55