我就是不知道怎么用汇编调用c,然后用汇编怎么实现屏幕至上到下颜色由浅到深变化,望各高手能指点迷经,最好是能给出怎么调用c的源码,并给出一点解释。
先谢谢了!
5 个解决方案
#1
int c_func(int a,int b)
{
.....
}
asm(".text");
asm(".global asm_func");
asm("asm_func:"); //汇编函数asm_func
asm("pushl eax"); //参数b入栈
asm("pushl ebx"); //参数a入栈
asm("call c_func");//调用c函数
asm("ret");
这是在linux上gcc支持的AT&T嵌入式汇编格式,dos下区别不大,好像c函数前要加下划线如:call _c_func,再就是,pushl这样的AT&T指令要改成intel汇编格式的。
{
.....
}
asm(".text");
asm(".global asm_func");
asm("asm_func:"); //汇编函数asm_func
asm("pushl eax"); //参数b入栈
asm("pushl ebx"); //参数a入栈
asm("call c_func");//调用c函数
asm("ret");
这是在linux上gcc支持的AT&T嵌入式汇编格式,dos下区别不大,好像c函数前要加下划线如:call _c_func,再就是,pushl这样的AT&T指令要改成intel汇编格式的。
#2
同意楼上的~也用int86()这个函数调用中断~
#3
shouchang
#4
不用调用什么C,直接用汇编就可以了,
先开一个窗口,再用INT 10H来画点就可以了
不过在每次画的时候再设置一下功能参数就可以了,不会很麻烦的
先开一个窗口,再用INT 10H来画点就可以了
不过在每次画的时候再设置一下功能参数就可以了,不会很麻烦的
#5
怎么设置功能参数?
#1
int c_func(int a,int b)
{
.....
}
asm(".text");
asm(".global asm_func");
asm("asm_func:"); //汇编函数asm_func
asm("pushl eax"); //参数b入栈
asm("pushl ebx"); //参数a入栈
asm("call c_func");//调用c函数
asm("ret");
这是在linux上gcc支持的AT&T嵌入式汇编格式,dos下区别不大,好像c函数前要加下划线如:call _c_func,再就是,pushl这样的AT&T指令要改成intel汇编格式的。
{
.....
}
asm(".text");
asm(".global asm_func");
asm("asm_func:"); //汇编函数asm_func
asm("pushl eax"); //参数b入栈
asm("pushl ebx"); //参数a入栈
asm("call c_func");//调用c函数
asm("ret");
这是在linux上gcc支持的AT&T嵌入式汇编格式,dos下区别不大,好像c函数前要加下划线如:call _c_func,再就是,pushl这样的AT&T指令要改成intel汇编格式的。
#2
同意楼上的~也用int86()这个函数调用中断~
#3
shouchang
#4
不用调用什么C,直接用汇编就可以了,
先开一个窗口,再用INT 10H来画点就可以了
不过在每次画的时候再设置一下功能参数就可以了,不会很麻烦的
先开一个窗口,再用INT 10H来画点就可以了
不过在每次画的时候再设置一下功能参数就可以了,不会很麻烦的
#5
怎么设置功能参数?