关于用汇编调用c的问题?

时间:2022-06-07 11:55:19
题目是这样的:用汇编或用汇编调用c实现:通过键盘输入两个点坐标,在屏幕上开一个窗口,并设定热键控制窗口的颜色,要求屏幕至上到下颜色由浅到深变化。
我就是不知道怎么用汇编调用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汇编格式的。

#2


同意楼上的~也用int86()这个函数调用中断~

#3


shouchang

#4


不用调用什么C,直接用汇编就可以了,
先开一个窗口,再用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汇编格式的。

#2


同意楼上的~也用int86()这个函数调用中断~

#3


shouchang

#4


不用调用什么C,直接用汇编就可以了,
先开一个窗口,再用INT 10H来画点就可以了
不过在每次画的时候再设置一下功能参数就可以了,不会很麻烦的

#5


怎么设置功能参数?