0.11版的linux内核中bootsect.s用的是什么汇编解决方法

0.11版的linux内核中bootsect.s用的是什么汇编
最近在看赵炯的《linux内核完全注释》,刚看第一个程序bootsect.s就看不大懂了,感觉汇编跟我以前学过的不太一样,可能是我以前学的不太精吧,有几点疑惑
1.注释用叹号,我以前汇编注释都用分号,这个可能与编译器有关吧,我不是太在意
2.前面几段中有以下代码:
Assembly code
.text
begtext:
.data
begdata:
.bss
begbss:
.text
SETUPLEN = 4
BOOTSEG = 0x07c0

这里面的begdata:begdata:begbss:都是什么东西?为什么会写两个.text文本段?
3.mov cx,#256,256前面加个井号,什么意思?以前也没见过
4.里面还有单独的一行rep,和单独的一行movw,这都是什么?这两个能单独出现吗,一般不是rep作前缀吗,比如REP MOVSW之类的,怎么会单独出现rep这个语句呢?难道跟后面的movw有联系?那为什么要放到两行?我下载过源代码,的确是两行,两行就是两个语句了,那movw是什么意思?传送一个字?把什么内容传到什么地方都没有说?那传送什么?
解答任何一个问题都可以
事先也怀疑用的是不是AT&T汇编,看别的语句好像用的不是Intel汇编,是AT&T汇编,但也不是,AT&T汇编用的是mov %esp,%ebp这样的语句,但bootsect.s中出现的都是mov ax,cs这样的语句,各位高手可以帮帮忙吗?先在这里谢谢啦!

------解决方案--------------------
1、是与编译器有关
2、程序编译后生成的目标文件至少含有三个段,分别为:.text、.data和.bss这个楼主自己google吧!网上都有
3、加#号表示立即数
4、rep就像loop一样,是以Cx中的值为标准的,movw是传送一个字,从mov cx, #256知道要传送256个字,
mov ax, #BOOTSEG
mov ds, ax ds = 0x07c0
mov ax, #INITSEG 
mov es, ax es = 0x9000
mov cx, #256 cx = 256
sub si, si si = 0x0000
sub di, di di = 0x0000
rep
movw

那么它表示将0x7c0:0x0000中的256个字移动到0x9000:0x0000中,也就是将本段代码移动到指定的位置

5、该文件不是AT&T的汇编,他也是一种近似于Intel的汇编,它的编译器是as86,连接器是ld86,看起来有一点不同。

建议你先熟悉汇编再看吧!!呵呵