- 论坛徽章:
- 0
|
并且还是个死循环,似乎在copy那里出了点问题。
[ORG 0]
jmp 0x07C0:copy ; Goto segment 07C0
chosemsg db '1 - Boot OS on hard disk', 0AH, 0DH, 'other key - Boot OS on floppy', 0AH, 0DH, $0
myosmsg db 'System Loading...',$0
copy:
; Move the code to 0x9000:0x0000
mov ax, 0x9000
mov es, ax
mov di, ax
mov si, ax
mov ax, cs ;CS == 0x07C0
mov ds, ax
mov cx, 0x0200
cld
repnz movsb ;[ES I] <- [DS:SI]
jmp 0x9000:start
start:
mov ax, cs ;CS == 0x9000
mov ds, ax
mov es, ax
mov si, chosemsg
prints1:
lodsb
cmp al, 0x00
je rdanswer
mov ah, 0x0E
mov bh, 0x0007
int 0x10
jmp prints1
rdanswer:
mov ah, 0x00 ;Read key
int 0x16
cmp al, '1'
je loadhd
mov si, myosmsg
prints2:
lodsb
cmp al, 0x00
je hang
mov ah, 0x0E
mov bh, 0x0007
int 0x10
jmp prints2
hang: jmp hang
loadhd:
;Load MBR at 0x07C0:0x0000 and jump to run.
mov ax, 0x07C0
mov es, ax
mov ax, 0x0201
xor bx, bx
mov cx, 0x0001
mov dx, 0x0080
int 0x10
jmp 0x07C0:0x0000
times 510-($-$$) db 0
dw 0AA55h |
|