C和汇编联合编译
汇编代码:
EXTRN _cmain
PUBLIC _myprint
.MODEL TINY
.CODE
.186
.CODE
org 0100h
_start PROC
jmp begin
nop
DB 'TianXiangYuan',0 ;the magic of my os
begin:
cli
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
mov sp,0FFFFh
sti
call _cmain ;调用C语言写的主函数
mov ax,4c00h ;调用DOS的功能(为了调试),与我们自己的操作系统无关
int 21h
_start ENDP
_myprint PROC
mov ah, 0Eh ; ┃ 每读一个扇区就在 "Booting " 后面打一个点, 形成这样的效果:
mov al, 'P' ; ┃
mov bl, 0Fh ; ┃ Booting ......
int 10h
ret
_myprint ENDP
END _start
C代码:
extern void myprint(void);
void cmain(void)
{
myprint();
}
分别编译,通过
链接时,tlink /t 1.obj 2.obj ;/t表示生成.com文件
我使用的是bc45编译器,结果提示data below initial CS:IP defined
不解,请各位大侠打酱油的时候帮忙下!感激不尽!