NASM Boot Loader奇怪的行为

时间:2011-10-16 20:19:33

标签: assembly nasm bootloader

我正在尝试编写一个启动加载程序,但在我找到这个问题之前,我的实验都没有奏效:Why doesn't this boot loader code work?

我简化了这个程序,只是将一个字符写入屏幕。

[ORG 0x7C00]
[BITS 16]

realstart:
    jmp start
    nop


start:
    xor ax,ax
    mov ds,ax
    mov es,ax
    xor bx,bx
    mov ah, 0x0e
print:
    mov al, "A"
    int 0x10
end:    
    cli
    hlt  

    times 510 - ($-$$) db 0
    dw 0xAA55

它编译得很好,但在objdump中没有任何int 0x10命令。

如果我留下字符串(this file),一切正常。

捕获的地方在哪里?

(使用Cygwin Win7 SP1上的NASM 2.08.02-1进行编译)

2 个答案:

答案 0 :(得分:0)

代码似乎没有任何问题。如果用ndisasm反汇编代码会产生缺少int 0x10的结果,那将是非常奇怪的。所以我想你会谈到在运行时转储代码。引导程序通常在跳转指令之后包含引导记录(它告诉引导加载程序有关介质的大小等)。也许BIOS出于某种原因正在考虑它认为的引导记录?

答案 1 :(得分:0)

Bits 16
org 0x7c00
start:
xor ax,ax
mov ah,0x0E
mov al,'A'
int 10h
mov al,10h
int 16h
int 19h
hlt
times 510-($-$$) db 0
dw 0xAA55

试试此代码。如果它不起作用,请告诉我。