linux0.11-include/asm/io.h

来源:互联网 发布:编写软件怎么自学 编辑:程序博客网 时间:2024/06/05 01:17

http://www.imooo.com/linux/linux-unix/1398418.htm

#define outb(value,port) \
asm (“outb %%al,%%dx”::”a” (value),”d” (port))
//宏定义outb用汇编实现了在端口地址port处写入值value
//使用的寄存器是al,一个byte长度,而端口port使用的是2byte长度地址来标记的寄存器,注意这里寄存器的使用

#define inb(port) ({ \
unsigned char _v; \
asm volatile (“inb %%dx,%%al”:”=a” (_v):”d” (port)); \
_v; \
})
//这里inb是在端口port处读入读入一个byte长度的数据,并把读入数据保存在变量_V中

#define outb_p(value,port) \
asm (“outb %%al,%%dx\n” \
“\tjmp 1f\n” \
“1:\tjmp 1f\n” \ //这里jmp 1f是老把戏了,就是继续向下执行语句,纯粹的通过“重复执行没啥意义的机器指令”短暂延时一下而已
“1:”::”a” (value),”d” (port))
//outb_p 和outb 区别在于前者有短暂延时,后者没有

#define inb_p(port) ({ \
unsigned char _v; \
asm volatile (“inb %%dx,%%al\n” \
“\tjmp 1f\n” \
“1:\tjmp 1f\n” \
“1:”:”=a” (_v):”d” (port)); \
_v; \
})
//inb_p 和inb 区别在于前者有短暂延时,后者没有

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米手机总跳出广告怎么办 小米手机总是出现广告怎么办 红米1s开机黑屏怎么办 红米手机打电话黑屏怎么办 小米4c打游戏卡怎么办 电脑总出现拨号连接怎么办 win10电脑没有拨号连接怎么办 红米手机黑屏了怎么办 小米4s黑屏了怎么办 鼠标的左键失灵怎么办 小米5左键失灵怎么办 小米4左键失灵怎么办 小米5s左键失灵怎么办 单击鼠标左键就会自动删除?怎么办 华为五s开不开机怎么办 荣耀8关不了机怎么办 三星s7左键失灵怎么办 华为mate7死机黑屏了怎么办 小米手机max黑屏打不开怎么办 小米max开不了机怎么办 小米6接听电话声音小怎么办 小米手机接听电话声音小怎么办 小米5听筒声音小怎么办 红米手机不能开机怎么办 小米5x升级失败怎么办 安卓手机打电话黑屏怎么办 来电话就出黑屏怎么办 oppo手机停留在开机界面怎么办 小米4c死机了怎么办 苹果手机拨打电话时黑屏怎么办 华为畅享6黑屏怎么办 手机拨号键盘变小了怎么办 小米5s手机黑屏打不开怎么办 小米5s黑屏只能开关机怎么办 手机拨号键没了怎么办 华为手机桌面拨号图标不见了怎么办 华为手机拨号图标不见了怎么办 小米4s屏幕显示黑屏怎么办 平板拨号键没了怎么办 华为手机拨号图标没了怎么办 华为荣耀手机进水了怎么办