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中。在汇编语句中从这几个寄存器中取数,再进行操作就行了,说起来也很简单的嘛,呵呵~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值