2
我使用NASM這是我的代碼:INT 10H 13H BIOS字符串輸出不工作
org 0x7c00
bits 16
section .data
zeichen dw 'hello2'
section .text
mov ax,0x7c00
mov es,ax
mov bh,0
mov bp,zeichen
mov ah,13h
mov bl,00h
mov al,1
mov cx,6
mov dh,010h
mov dl,01h
int 10h
jmp $
times 510 - ($-$$) hlt
dw 0xaa55
它並把光標放在合適的位置,但不打印輸出。 我使用qemu-system-i386加載此文件。 int10 ah = 13h是一個字符串輸出,並在寄存器es中:bp必須是字符串的地址
不止一個問題。你必須更好地理解segment:offset尋址,但是一個bootloader被加載到物理地址0x07c00。您必須選擇一個等於該地址的ORG和分段。如果選擇ORG 0x7c00,則需要將段(本例中爲_ES_)設置爲零,因爲(0x0000 << 4)+ 0x7c00 = 0x07c00(物理地址)。您正在使用0x7c00加載_ES_,這對您選擇的_ORG_不正確。 –
其次,當使用'-f bin' _NASM_輸出時,您不想使用'.data'節。將數據放在代碼後面的'text'部分內,但在引導簽名之前。如果使用'section data',NASM將實際將數據放在引導扇區之外的字節512之後。 –
您將_BL_設置爲0x00。這是黑色的黑色,所以不會顯示輸出。也許嘗試0x07? –