当前位置:首页 > 第六章 函数
下面是函数指针定义的例子中,两个整型参数的传递与返回一个整型参数的过程。
10: x=(*pFunc)(3,4); //传递3和4
C:0x0014 F582 MOV DPL(0x82),A C:0x0016 8A83 MOV DPH(0x83),R2 C:0x0018 7D04 MOV R5,#0x04 ;第一个低位送R5
C:0x001A 7C00 MOV R4,#0x00 ;高位送R4
C:0x001C 7F03 MOV R7,#0x03;第二个低位送R7
C:0x001E 7E00 MOV R6,#0x00;高位送R6 C:0x0020 12006B LCALL C?ICALL2(C:006B) C:0x0023 8E08 MOV 0x08,R6 ;返回高
位送R6
C:0x0025 8F09 MOV 0x09,R7 ;返回低位送R7
11: pFunc=sub; //由于两个函数格式相同,故定义了一个函数指针
C:0x0027 7BFF MOV R3,#0xFF ;函数指针的存储器类 型,程序代码为code,故为0XFF
C:0x0029 7A00 MOV R2,#0x00 ;被调用函数的地址高位
C:0x002B 7958 MOV R1,#0x58 ;被调用函数的地址低位
C:0x002D 900000 MOV DPTR,#0x0000 C:0x0030 EB MOV A,R3 C:0x0031 F0 MOVX @DPTR,A
C:0x0032 A3 INC DPTR C:0x0033 EA MOV A,R2 C:0x0034 F0 MOVX @DPTR,A C:0x0035 A3 INC DPTR C:0x0036 E9 MOV A,R1 C:0x0037 F0 MOVX @DPTR,A
13: }
C:0x004B 22 RET
C:0x004C 787F MOV R0,#0x7F C:0x004E E4 CLR A
C:0x004F F6 MOV @R0,A
C:0x0050 D8FD DJNZ R0,C:004F
C:0x0052 75810B MOV SP(0x81),#0x0B C:0x0055 020003 LJMP main(C:0003)
3: int sub(int a,int b) //被调用时的参数传递关系,返回为整型
C:0x0058 C3 CLR C ???
C:0x005E FE MOV R6,A C:0x005F 22 RET
2: {return a+b;}//C:0x0060 EF MOV A,R7 C:0x0061 2D ADD A,R5 C:0x0062 FF MOV R7,A C:0x0063 EE MOV A,R6 C:0x0064 3C ADDC A,R4 C:0x0065 FE MOV R6,A C:0x0066 22 RET C?ICALL:
;结果送R6 定义了一个加法函数
共分享92篇相关文档