直接看目录结构
│ main.c(可以调用asm的函数,可以使用最原始的c语言,你要明白基本所有头文件都要用汇编自己造)
│ Makefile(make脚本)
├─asm
│ asmhead.asm(别管)
│ ipl10.asm(别管)
│ naskfunc.asm(这里用来写asm函数)
└─include
head.h(关联asm和c的头文件,c就可以调用asm的函数)
绿色的文件都可以动,我来教你们怎么动
下面我们来实现输出helloworld
naskfunc.asm
; naskfunc ; TAB=4 [FORMAT "WCOFF"] ; 制作目标文件的模式 [INSTRSET "i486p"] ; 使用到486为止的指令 [BITS 32] ; 3制作32位模式用的机器语言 [FILE "naskfunc.asm"] ; 文件名 GLOBAL _io_hlt,_write_mem8 [SECTION .text] _io_hlt: ; void io_hlt(void); HLT RET _write_mem8: ; void write_mem8(int addr, int data); MOV ECX,[ESP+4] ; taking content of add MOV AL,[ESP+8] ; taking content of data MOV [ECX],AL ; *ecx=al RET
GLOBAL 这里 和 两个函数这里是关键,_io_hlt函数就是休眠cpu的,_是必须要的,这个没有链接不到c语言的函数
_write_mem8用来在指定内存地址写内容的,有两个参数,第一个是地址,第二个是数据,都是int标签:OS,hlt,helloworld,write,io,My,mem8,asm,naskfunc From: https://www.cnblogs.com/Frank-dev-blog/p/17140703.html