下面的代码是两段反汇编.其代码是由C编译器自动产生的.C编译器给他加上的标号我也写在代码段的开头.希望哪位大虾能帮助分析一下,该程序段在C里面怎么表达.(我估计可能是外部数据数组的寻址操作), 谢谢!
?FUNC_ENTER_XDATA: ADD A,10H XCH A,DPL PUSH ACC MOV A,11H ADDC A,#0FFH XCH A,DPH PUSH ACC MOV A,10H CLR C SUBB A,DPL ADD A,#0F9H MOV R0,A CLR A XCH A,IE MOV 11H,DPH MOV 10H,DPL XCH A,IE MOV A,R0 XCH A,R6 MOVX @DPTR,A INC DPTR MOV A,20H MOVX @DPTR,A INC DPTR MOV R0,#08H Q0537: MOV A,@R0 INC R0 MOVX @DPTR,A INC DPTR DJNZ R6,Q0537 MOV A,R7 MOVX @DPTR,A INC DPTR MOV A,SP ADD A,#0FBH MOV R0,A MOV A,@R0 INC R0 MOVX @DPTR,A INC DPTR MOV A,@R0 INC R0 MOVX @DPTR,A INC DPTR INC R0 INC R0 MOV A,@R0 INC R0 MOVX @DPTR,A INC DPTR MOV A,@R0 INC R0 MOVX @DPTR,A INC DPTR DEC SP DEC SP POP ACC MOV R6,A POP ACC MOV R0,A DEC SP DEC SP MOV A,R0 PUSH ACC MOV A,R6 PUSH ACC RET
?FUNC_LEAVE_XDATA: MOV DPH,11H MOV DPL,10H MOVX A,@DPTR INC DPTR MOV R6,A MOVX A,@DPTR INC DPTR MOV 20H,A MOV R0,#08H Q057B: MOVX A,@DPTR INC DPTR MOV @R0,A INC R0 DJNZ R7,Q057B MOVX A,@DPTR INC DPTR MOV R7,A MOVX A,@DPTR INC DPTR PUSH ACC MOVX A,@DPTR INC DPTR PUSH ACC MOVX A,@DPTR INC DPTR PUSH ACC MOVX A,@DPTR INC DPTR PUSH ACC CLR A XCH A,IE MOV 10H,DPL MOV 11H,DPH XCH A,IE POP DPH POP DPL RET |