romanticye 发表于 2009-7-10 23:02:36

avr简单汇编请马老师帮忙

程序如下
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指教谢啦!

romanticye 发表于 2009-7-12 10:49:13

没人帮忙自己先顶一下先,继续等待好心人./emotion/em021.gif
页: [1]
查看完整版本: avr简单汇编请马老师帮忙