我在Mac上工作。我试过了Mtool。我甚至无法安装它因为它显示了一堆我无法处理的错误(相信我这不适合我)。
我想要做的只是将普通文件复制到fat12 Img文件。 你可以用Mtool做的事情。
mcopy -i floppy.img mornal.file
除了使用Mtool之外我怎么做。 这是我想在Img文件中写的文件。
ORG 0xc200
MOV AL,0x13
MOV AH,0x00
INT 0x10
fin:
HLT
JMP fin
我在引导扇区完成其工作后添加JMP 0xc200
并尝试添加文件名和fat12文件系统允许其定位的代码(0x2600和0x4200:FAT12加载元数据和数据本身) 。
t:
TIMES 0x2600-0x512 DB 0
DB "TEST sys" ;8bytes file name : meta data
TIMES 0x4200-0x2611 DB 0 ;2611 = 2600 + file name(11)
ORG 0xc200 ;data
MOV AL,0x13
MOV AH,0x00
INT 0x10
fin:
HLT
JMP fin
done:
TIMES 0x168000-(done-t) DB 0
这是BIOS参数块和我的其余代码。
JMP entry
DB 0x90
DB "MyOS "
;BIOS Parameter Block
DW 512
DB 1
DW 1
DB 2
;End of BIOS Parameter Block
DW 224
DW 2880
DB 0xf0
DW 9
DW 18
DW 2
DD 0
DD 2880
DB 0,0,0x29
DD 0xffffffff
DB "MyOS-Vol "
DB "FAT12 "
TIMES 18 DB 0
entry:
MOV AX, 0
MOV SS,AX
MOV SP,0x7c00
MOV DS,AX
MOV AX,0x0820
MOV ES,AX
MOV CH, 0
MOV DH, 0
MOV CL, 2
readloop:
MOV SI, 0
retry:
MOV AH, 0x02
MOV AL, 1
MOV BX, 0
MOV DL, 0x00
INT 0x13
JNC next
ADD SI, 1
CMP SI, 5
JAE error
MOV AH, 0x00
MOV DL, 0x00
INT 0x13
JMP retry
next:
MOV AX,ES
ADD AX,0x0020
MOV ES,AX
ADD CL, 1
CMP CL,18
JBE readloop
MOV CL, 1
ADD DH, 1
CMP DH, 2
JB readloop
MOV DH, 0
ADD CH, 1
CMP CH,CYLS
JB readloop
JMP 0xc200
fin:
HLT
JMP fin
error:
MOV AX, 0
MOV ES,AX
MOV SI,msg
printloop:
MOV AL,[SI]
ADD SI, 1
CMP AL,0
JE fin
MOV AH, 0x0e
MOV BX, 15
INT 0x10
JMP printloop
msg:
DB 0x0a, 0x0a
DB "load error"
DB 0x0a
DB 0
maker:
TIMES 0x01fe-(maker-start) DB 0
DB 0x55, 0xaa
但是当我组装它时它会显示错误。
error: program origin redefined
我想这是因为我在bootsector中使用ORG 0xc200
之后使用了ORG 0x7c00
。但是我认为没关系,因为我在正确的地方写它(0x2600,0x4200)。
我认为这就是IPL的作用。跳转到它所在的程序,程序应该在内存中分配。
简而言之,问题是
mount
和finder进行此类操作但是我如何以编程方式执行此操作(因为我应该为此prosedure创建一个Makefile)? btw我可以用dd
吗?