| 用51可以做得更好 
 
 1.A1=B1;
 
 mov    A1,B1
 总共: 3字节(=PIC 2指令字),2指令周期
 A1、B1可以为RAM地址0~255,如果用PIC,RAM〉32时,2指令字根本做不到。
 
 2. C1 = A1+B1;
 
 mov    A,A1
 add     A,B1
 mov     C1,A
 总共: 3字节(A1,B1,C1使用寄存器),3指令周期。
 
 
 3. A[B] = C;
 
 movf    _B,w
 addlw    _A
 movwf    4
 bcf    3,7
 movf    _C,w
 movwf    0
 总共: 6指令字,6指令周期
 (这个是什么意思,没看懂)
 
 4.
 for(i = 0; i < 10;i++)
 {
 A = 1;
 }
 mov    R0,#9
 mov    A,#1
 LOOP:
 mov    @R0,A
 djnz    R0,LOOP
 mov    @R0,A
 ret
 运行时间30个指令周期(<PIC的123个指令周期),8个指令节(<PIC的17指令字)
 
 
 
 5.
 
 if(A1 > 10)
 B1 = 0;
 else
 B1 = 1;
 mov    B1,#1
 cjne    A1,#10,CHECK
 ret
 CHECK:
 jc    RETURN
 dec    B1
 RETURN:
 ret
 总共: 8指令字令节(<PIC的5指令字),3指令周期(if A<10),6指令周期(if A1>10),
 (使用寄存器寻址)
 
 
 6.
 unsigned char A1,B1
 
 switch(A1)
 {
 case 0:
 B1 = 10;
 break;
 
 case 1:
 B1 = 20
 break;
 
 default:
 B1 = 30;
 break;
 }
 mov    A,A1
 jnz    OTHER_CASE
 mov    B1,#10
 ret
 OTHER_CASE:
 djnz    A1,DEFAULT
 mov    B1,#20
 ret
 DEFAULT:
 mov    B1,#30
 ret
 14指令字节(<PIC的27指令字),运行8个指令周期(<PIC的9个指令周期)
 (使用寄存器寻址)
 |