これから少しずつソースを読んで行こうと思います。
良いリファレンス、ひげぽんの間違い指摘、アドバイス等ありましたら
ぜひ書き込みください。

まずはこの部分から。
>;setup the stack
>;we can't allow interrupts while we setup the stack
スタックセットアップをしているらしい。
>
>cli           ;disable interrupt  ■外部割込みを禁止する
ここはOK

>mov   ax,0x9000    ;put stack at 0x9000 ■汎用レジスタに0x9000をセットする
axに0x9000を入れることにどういう意味があるか?
ssに0x9000をいれるためか?

>mov   ss,ax      ;ss=9000       ■セグメントレジスタ(スタックセグメント)にaxの値をセットする
mov ss,0x9000とどう違うのか?
またどういう意味があるか?

>mov   sp,0      ;sp=0000       ■スタックポインタに0をセットする
どういう意味があるか?

>sti           ;enable interrupt  ■外部割込みを可能にする
ここはOK

勉強が足らないですね。