原创 C语言与单片机-12-基本运算2

2016-1-26 11:27 865 10 10 分类: MCU/ 嵌入式 文集: C语言

取模运算%,如果您没有写过代码,您对"%"可能不熟悉。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条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条