C51编程:please help me!各位论坛朋友:
你们好!
近一个月来,我边学c51边编程,感觉收益挺大,用c编程比汇编编程,可读性可修改性强多
了,我就是看了论坛而决定用c51编程,并且论坛各位朋友的精彩解答帮我解决了许多的疑
惑,感谢论坛!
我在最近的编程中碰到一个比较奇怪的现象,请各位朋友帮忙。
c语句:
#define uchar unsigned char
uchar data org_bj_state;
void check_port(void)
{
ACC=P0;
ACC^=org_bj_state;
}
translate通过,no warnings,no errors
其.src汇编语句为:
mov a,p0
mov a,org_bj_state
xrl a,acc
看其汇编语句,与我设想的要求显然不同,我将上段c语句改为如下:
void check_port(void)
{
uchar temp_data;
temp_data=P0;
temp_data^=org_bj_state;
ACC=temp_data;
}
则其汇编的语句执行过程为:
读取P0口的值,将P0口的值与存储器org_bj_state中值异或,结果送A中.
通过上边的现象,我发觉在c51中累加器A有一些特别使用注意的地方,从买的c51的书中又查
不到有关A的特别注意的地方,请各位朋友解惑?(是否因为^的两边运算对象为变量,而A不合
规定)