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