Keil C調用匯編(一)

//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中。在彙編語句中從這幾個寄存器中取數,再進行操作就行了,說起來也很簡單的嘛,呵呵~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章