|
程序如下
0000027c <Delay>:
}
/*---------延时子程序------------*/
void Delay(void)
{
unsigned int n = 2800;
while(n--) ;
27c: 8f ee ldi r24, 0xEF ; 239
27e: 9a e0 ldi r25, 0x0A ; 10
280: 04 97 sbiw r24, 0x04 ; 4
282: 2f ef ldi r18, 0xFF ; 255
284: 8f 3f cpi r24, 0xFF ; 255
286: 92 07 cpc r25, r18
288: d9 f7 brne .-10 ; 0x280 <Delay+0x4>
28a: 08 95 ret
这是一条延时程序可是我一点都不明白
1。sbiw r24, 0x04 ; 4//寄存器对要减的为什么是4?
2、cpi r24, 0xFF ; 255//cpi该指令完成寄存器r24和常数的比较操作,寄存器的内容不改变,该指令后能使用所有条件跳转指令。这一句的作用具体体现在哪里啊?对标志位有什么影响?
3、brne .-10 ; 0x280 <Delay+0x4>//不相等则跳转if (Z = 0) then PC ← PC + k + 1,那如果Z != 0呢 PC会指向哪里呢?
4、这条程序的汇编程序师如何实现n!=0;返回循环的?
本人实在是太菜了,还恳请马老师和各为DX指教谢啦! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|