Я пытаюсь написать код ассемблера в mbr, чтобы использовать ISR BIOS. Я пишу следующий код в mbr, ожидая, что символы «ABCD» будут напечатаны на экране:
mov ah,0x0e
mov bp,0x8000
mov sp,bp
push 'A'
push 'B'
push 'C'
push 'D'
mov al, [0x7ffe]
int 0x10
mov al, [0x7ffc]
int 0x10
mov al, [0x7ffa]
int 0x10
mov al, [0x7ff8]
int 0x10
; infinite loop
jmp $
; padding 0s and set the magic number to make it bootable
times 510 -( $ - $$ ) db 0
dw 0xaa55
этот код хорошо работает на симуляторе bochs или qemu, но когда я записываю на свой настоящий диск и использую его для загрузки, ничего не печатается. Я тестировал, чтобы напрямую установить регистр% al на символы, и он хорошо печатается. Я использую процессор AMD PhenomII 955, я что-то сделал не так?
xor ax, ax
mov ss, ax
mov ds, ax
. Инструкцияmov al, [...]
используетds
, аpush ...
используетss
. Убедитесь, что они равны. - person Margaret Bloom   schedule 13.09.2016