有了《初识Linux汇编》和《I/O映射之I/O端口》两篇文章的基础学习后,我们对控制PC蜂鸣器的操作改为使用内联汇编的方法,里面会使用到约束“a”和“dN”,其中前者对应eax,后者对应edx,并且N表示0-255之间的数,有了这些了解后,我们改造下“I/O映射之I/O端口”里的例子,改造后的代码如下:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/timex.h>
static int value = 0;
module_param(value, int, 0644);
MODULE_PARM_DESC(value, "the beep frequences(20,32767)");
static __init int ioport_beep_init(void)
{
unsigned int count = 0;
u8 val;
u16 port;
if (value > 20 && value < 32767)
count = PIT