Nasm程序的结构:
SEGMENT _TEXT PUBLIC class=CODE ;注意只需定义该代码段即可,代码和数据在同一个段内
extern C函数(注意,以”_”开头)
resb 100h ;nasm obj文件不支持org,以resb 100h代替
..start: ;程序入口点
jmp begin
begin:
mov ax, cs
mov ds, ax
mov es, ax
push len_str
push BootMessage
call _input
global _DispStr ;C程序可以调用的过程
_DispStr:
…
ret
BootMessage: ;数据开始
times 9 db 0
len_str EQU $ - BootMessage
C程序的结构:(程序只能定义局部变量,其他数据只能定义在汇编程序中)
extern void DispStr(); // 引入汇编子过程
void input(char * off_BootMessage, int len)
{
off_BootMessage[0] = ‘a’;
DispStr();
}
编译过程:
Nasm 汇编程序.asm –fobj –o 目标程序1.obj ; 以OBJ格式输出
Tcc –c –mt –o目标程序2.obj C程序.c ;以小模式编译为目标程序
Tlink /t 目标程序1.obj 目标程序2.obj , DOS执行程序.com ;生成.com程序