在线请教(linux内核的)一段汇编代码的每个字的具体含义。。。。。
47 mov ax,#BOOTSEG ! 将ds 段寄存器置为0x7C0;
48 mov ds,ax
49 mov ax,#INITSEG ! 将es 段寄存器置为0x9000;
50 mov es,ax
51 mov cx,#256 ! 移动计数值=256 字;
52 sub si,si ! 源地址 ds:si = 0x07C0:0x0000
53 sub di,di ! 目的地址 es:di = 0x9000:0x0000
54 rep ! 重复执行,直到cx = 0
55 movw ! 移动1 个字;
以上是bootsect.s中的一段汇编代码,是用于把bootsect.s自身从0x07c0移动到0x9000的位置,这些我知道。但是,汇编没学过,具体的含义不懂:
比如:
1。为什么要使用16位寄存器ax?他有什么用?
2。段寄存器ds和es,有什么特殊功效?一定要使用他们?
3。那个16位寄存器cx用作计数,rep又怎么知道应该循环到哪里?而且每次循环都要使cx减少1 ?
4。sub不是减的意思吗?16位寄存器si和di为什么又要减自己呢?
纳闷!!!有文化的人帮忙??!