outb_p意思是把value值写到端口port上,并延迟
源码的函数如下:
#define outb_p(value,port) \
__asm__ ("outb %%al,%%dx\n" \
"\tjmp 1f\n" \
"1:\tjmp 1f\n" \
"1:"::"a" (value),"d" (port))
容易理解的代码如下:
#define outb_p(value,port) _outb_p((unsigned char)(value),(unsigned short)(port))
_inline void _outb_p(unsigned char value, unsigned short port)
{
_asm mov al,value
_asm mov dx,port
_asm out dx,al
_asm jmp l1
_asm l1: jmp l2
_asm l2:
}
查看汇编容易理解out是al持有的数据写入dx的端口上,两个jmp用于时间延迟