编写驱动程序用c语言还是汇编语言?还是控制硬件要在c中混编汇编?可以给出一个例子的代码吗?谢谢。

编写驱动程序用c语言还是汇编语言?还是因为驱动控制硬件要在c语言中混编汇编?可以给出一个例子的代码吗?谢谢。

会汇编当然最好
硬件控制可以直接用C语言
#include <stdio.h>

extern void swi_handler(void);
/*中断处理子程序*/
void do_swi(int num)
{
/*
switch (num)
{
case 0x1: ...
case 0x2: ...
}
*/
printf("%d helloworld\n", num);
}
//swi_handler
void install_swi_handler(void (*fun)(void))
{
unsigned int cmd;
//1.构造一条跳转指令
*((unsigned int *)0x38) = (unsigned int)fun;
cmd = 0xe59ff028;
//2.把此指令机器码放到0x8地址

*((unsigned int *)0x8) = cmd;
}
int main(void)
{
int i = 0;

install_swi_handler(swi_handler);

for (i = 0; i < 10; i++) {
if (i == 3) {
__asm
{
swi 0x123
}
}
else
printf("aa\n");
}
return 0;
}追问

比如mov dx,1234h
mov ax,080h
out dx,ax上面的代码用c语言怎么实现?可以给出示例代码吗?谢谢。

追答

sfr dx = 0x80;
sfr ax = 0x90;
dx= 0x1234;
ax= 0x80;
dx= ax;
想要直接操作特殊寄存器,需要知道寄存器地址。我上面是以单片机寄存器访问方式给的示例。
C语言嵌入汇编也很常见的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-05
您老:施女士,这边请。
相似回答