蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


[求助]这段代码用bochs模拟时怎么显示有无效指令?

并且还是个死循环,似乎在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:DI] <- [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

[求助]这段代码用bochs模拟时怎么显示有无效指令?

[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   [color=blue]<-这个是不是需要清零?[/color]
mov si, ax   [color=blue]<-这个是不是也需要清零?[/color]
mov ax, cs ;CS == 0x07C0


不是很明白...

[求助]这段代码用bochs模拟时怎么显示有无效指令?

啊,我真是太粗心了,我找了很久都没找到原因,非常谢谢!!



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com