取模运算%,如果您没有写过代码,您对"%"可能不熟悉。A%B得到A除以B的余数。
如果我们检查一个整数X是否可以倍7整除只需检查X%7的值是否为0.
int main( )
{
unsigned char x=123;
unsigned char y;
y=x%7;
return 0;
}
我们看看汇编过程:
2: int main(void)
3: {
4: unsigned char x=123;
5: unsigned char y;
6:
7: y=x%7;
8:
C:0x0003 747B MOV A,#0x7B
C:0x0005 75F007 MOV B(0xF0),#0x07
C:0x0008 84 DIV AB
C:0x0009 85F008 MOV 0x08,B(0xF0)
9: return 0;
10:
11:
C:0x000C E4 CLR A
C:0x000D FE MOV R6,A
C:0x000E FF MOV R7,A
12: }
我们分析以上汇编:
1,将0x78(123)移入A寄存器,
2, 将0x07(7)移入B寄存器
3,A寄存器中的值除以B寄存器中的值。整数部分存储在A中,余数部分存储在B 中。
4,将寄存器B中的值存放在8号地址中。
大家想一想如果没有DIV汇编指令,该怎样实现呢?我有个同学说减法可以实现。
取余运算%还有用处,不如我们要的到1596个位、十位、百位等三位数大家想想怎么计算。
个位值为: 1596%10;
十位值为: (1596%100)/10
百位值为: (1596%1000)/100
是不是非常容易!
如果在实际项目中%运算有非常多的用处,比如我们需要获取一个整型数据的高8位与低8位,
可以通过 x/256获得高8位,x%256获得低8位.
文章评论(0条评论)
登录后参与讨论