【发布时间】:2012-01-01 07:01:39
【问题描述】:
我的简单代码:
[ORG 0x7C00]
MOV AH,0x02 ;Using the function of reading floppy
MOV AL,0x01 ;The number of sectors to be read is 1.
MOV CH,0x00 ;Only read 0 track
MOV CL,0x03 ;Only read the third sector
MOV DH,0x00 ;Only read the 0 head
MOV DL,0x00 ;Using driver 0
INT 13H
JMP $ ;Just for loop forever
TIMES 510 - ($ - $$) db 0 ;This is for 1 sector(512 bytes)
DW 0xAA55 ;This is for the end of boot sector
在我运行 bochsdbg 之后。
它显示:
(0) Breakpoint 1, 0x00007c00 in ?? ()
Next at t=12943079
(0) [0x00007c00] 0000:7c00 (unk. ctxt): mov ah, 0x02 ; b402
<bochs:3> c
00012943849i[FDD ] read() on floppy image returns 0
00012989063i[CPU0 ] LOCK prefix unallowed (op1=0x53, attr=0x0, mod=0x0, nnn=0)
我认为 INT 13 应该返回 CF=1 的错误状态,而不是被该错误消息停止。
发生了什么事?如何解决?
谢谢~
【问题讨论】:
-
非英文字母只是编码 cmets 吗?
-
我认为您应该将您的(中文?)cmets 翻译成英文,因为这是一个讲英语的论坛,而 cmets 有助于理解代码。
-
即使它们是只是 cmets,我认为留下 cmets 是有原因的,也许是为了帮助读者理解代码的目的。因此,在发布到英语问答网站时翻译它们是有意义的。由于“过于本地化”而投票结束。