毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

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

更新时间:2013-4-25:  来源:毕业论文

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

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

Assembly code?123456789 .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,看起来有一点不同。

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

 

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。