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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写驱动程序用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语言嵌入汇编也很常见的

参考技术A 您老:施女士,这边请。

单片机编程用C语言还是汇编?

单片机是一种可编程器件,单片机的出现使硬件设计变得更为简单,产品的功能也更强大,而程序就是单片机的灵魂。 目前功能稍微复杂一点的电子产品,都是以单片机为核心,再加以不通的外设电路实现不通的功能需求。 单片机的编程可以通过汇编语言C语言来实现。
1 汇编编程的特点
汇编是一种更接近于硬件底层的低级语言。 硬件在编程时总线和地址非常重要,在汇编语言中,一般用助记符来替代机器指令的操作码,用标号代表操作数的地址,所以汇编语言和机器指令之间存在着唯一对应的关系,这就导致了不通系列的单片机其汇编指令集是完全不通的。 这样做是比较麻烦的,因为更改了单片机或者升级老产品之后,原有的汇编代码难以跨平台移植,只能再重新编写。 所以,汇编的移植性非常差,由于是直接操作机器指令,所以在可读性上也非常差 这是汇编语言的两个最大的缺点,但是其优点就是执行效率非常高。 从方便的角度上来说,汇编方便了硬件,但对工程师却不友好。

单片机编程用C语言还是汇编?2C语言编程的特点

在前几年使用汇编编程的人还是挺多的,现在使用汇编的人原来越少,即使是写驱动的人也不完全使用汇编而是使用汇编和C语言结合的方式。 单片机的C语言编程具有两个最大的优点。
第一个优点:易于移植
有过单片机C语言编程的同行都有这样的经历,在编程时,首先要在初始化中配置单片机的寄存器,配置完之后的代码不再频繁的和寄存器打交道,所以使得C语言的层次非常清晰,在移植代码时,只需要根据新的平台修改一下寄存器的配置部分就可以了,功能主体部分几乎不用修改。 这也就是很多优秀程序员所倡导的当文档层次化编程的原因,每个功能块都对应一个C文件和H头文件,在移植时只需要把这两个文件拷走即可,方便了移植。

单片机编程用C语言还是汇编?

从这个方面来讲,完全可以抛开单片机的寄存器配置来实现编程,这方面做的比较好的如STM32的官方库编程和CMSIS等。
第二个优点:易于阅读
由于C语言通过寄存器和硬件驱动/接口建立关系,编程者不用再去记忆枯燥的指令,而且C语言编程的层次化、模块化编程也大大提高了代码的可读性。 相比于汇编,C语言可以用更少的代码实现更复杂的功能,而且还更易于理解。 这也是C语言越来越受欢迎的原因。

3C语言对比汇编的优势

通过前面的描述可以看得出来,C语言占有更多得优势,C语言易于跨平台移植、C语言易于理解、C语言易于延续 总之,从编程得角度C语言更受程序员们得欢迎。

精彩技术文章推荐



01


02


03


04



以上是关于编写驱动程序用c语言还是汇编语言?还是控制硬件要在c中混编汇编?可以给出一个例子的代码吗?谢谢。的主要内容,如果未能解决你的问题,请参考以下文章

单片机编程用C语言还是汇编?

如何用jetbrains的Clion编写c语言

win32程序创建线程用c语言库的_beginthread还是API的CreateThread?哪种用的多?

编程语言学vb好还是c

02编程语言与python介绍

编写脚本用的语言是C语言吗?