/******************************************************/
?对于 嵌入的汇编指令,编译器不会进行语法检查,
编程者必须确认嵌入的指令合理有效。
?使用asm指令的时候应小心不要破坏C语言的环境 。
如果C代码中插入跳转指令和标识符可能会引起不可预料的操作结果。能够改变块或其它影响汇编环境的指令也可能引起麻烦。
?对带asm语句的代码使用优化器时要特别小心。 尽管优化器不能删除asm指令,但它可以重新安排asm
指令附近的代码顺序,这样就可能会引起不期望的结果。
13.1.5 访问I/O空间
?I/O空间地址声明要在程序中访问io空间地址,必须首先用关键字
“ioport”对要访问的地址进行定义。
语法:ioport type porthex_num
ioport 声明io空间端口变量的关键字;
type 变量类型,可以为char,short,int或
unsigned int;
porthex_num 端口号,port后面接16进制数字。
/*******************************************/
ioport unsigned int port10;
/******************************************/
注,声明io空间地址必须在C文件起始声明,不允许在函数中使用ioport声明io空间地址。
?I/O空间地址访问访问用ioport关键字声明的I/O端口变量和访问一般变量没有区别。
/***********************************************************/
ioport unsigned int port10; /* 访问I/O端口10h的变量 */
int func ()
{
...
port10 = a; /* 写 a到端口 10h */
...
b = port10; /* 读取端口10h的值到 b */
...
}
/***********************************************************/
I/O端口变量的使用不仅仅局限于赋值,和其他变量同样也可以应用于其它的表达式 。
/***********************************************************/
call (port10); /* read port 10h and pass to call */
a = port10 + b; /* read port 10h,add b,assign to a */
port10 += a; /* read port 10h,add a,write to port 10h */
/***********************************************************/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
程序中访问的任何一个IO地址都必须在C语言程序起始处用ioport关键字声明!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13.1.6 访问数据空间访问数据空间不需要对要访问的单元预先声明,访问是通过指针的方法实现的。
/***********************************************************/
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-29489-47.html
笑起来很好声音也很好一句话咯加油
做好“法律战”准备
日本电器20年照样杠杠的