Keil C调用汇编(一)

时间:2021-08-12 00:57:14

//c中的程序如下
extern void DELAY(unsigned char i,unsigned int j);
char CYZ;
void main(void)
{
DELAY(10,1000);
}


;汇编程序如下:
PUBLIC   _DELAY          ;程序段
DELAYP    SEGMENT CODE   ;入口地址
RSEG     DELAYP          ;程序段
;EXTRN     CODE  (?C?FPMUL)
EXTRN    DATA  (CYZ)

_DELAY:
DELAY:
       DJNZ R4,$
       DJNZ R5,$
       DJNZ R7,$
      mov CYZ,a;只是为了说明如何改变其全局变量的值
       RET  
END

数类型  char   int         long/float      通用指针
第1个   R7     R6&R7    R4-R7          R1-R3
第2个   R5     R4&R5    R4-R7          R1-R3
第3个   R3     R2&R3    --                R1-R3
       举个例子吧,void delay(unsigned char i, unsigned int j)  当执行语句delay(10,1000)时,10会存入R7中,1000高位会存入R4中,低位存入R5中。在汇编语句中从这几个寄存器中取数,再进行操作就行了,说起来也很简单的嘛,呵呵~