谢谢书呆彭的回答
第一个问题完全明白了~
第二个问题,软盘应该不存在坏道,因为是在虚拟机器上运行……不过int86和int86x是执行软件中断或者映射为默认中断的,在没有操作系统的机器上运行这个好像和用int 0x13一样……
AH = 03
AL = number of sectors to write (1-128 dec.)
CH = track/cylinder number (0-1023 dec.)
CL = sector number (1-17 dec., see below)
DH = head number (0-15 dec.)
DL = drive number (0=A:, 1=2nd floppy, 80h=drive 0, 81h=drive 1)
ES:BX = pointer to buffer
AH = 02
AL = number of sectors to read (1-128 dec.)
CH = track/cylinder number (0-1023 dec., see below)
CL = sector number (1-17 dec.)
DH = head number (0-15 dec.)
DL = drive number (0=A:, 1=2nd floppy, 80h=drive 0, 81h=drive 1)
ES:BX = pointer to buffer
于是,我用TC:
#define RUNALL
char* tmp = "Hello World!";
char* tmp2;
#ifdef RUNALL
_AX = tmp;
_ES = _AX;
_AX = 0x0301;
_CX = 1;
_DX = 0;
_BX = 0;
asm int 0x13
#endif
_AX = tmp2;
_ES = _AX;
_AX = 0x0201;
_CX = 1;
_DX = 0;
_BX = 0;
asm int 0x13
printf(tmp2);
有#define RUNALL就正常(但正常情况下用winhex打开软盘文件还是找不到hello world),没有反之…………
再次感谢以上帮助我的人,谢谢!