一段8086汇编语言写的代码,求解释。

2024-12-19 00:37:11
推荐回答(1个)
回答1:

这不是《自己动手写操作系统》的示例吗。

这个是内核引导扇区代码,不等同于普通的程序,(这里只是输出hello world)
用nasm语言写成

1. org 0x7c00 因为计算机会将本段放置0x7c00位置,所以此时需要声明偏移(cs=0x7c00)
接下来,将ss,cs,ds设成0x7c00,这样,才可计算数据、堆栈偏移
2. call会将ip指向函数入口,这是典型的函数调用
$表示本指令地址,jmp $表示,跳至本处地址(即死循环)

3. 函数内部
int 0x10 中断表示输出,那些mov是给中断提供参数
具体寄存器参数请参考google

4. times 表示重复, 这里就是重复若干(510 - ($-$$))个0
$$表示本段地址,此句含义是将程序大小扩至512字节。

5. 0xaa55指引导扇区标志,也就是说,计算机在510字节处发现0xaa55,则认为这是引导扇区