程序代码:
MAIN: MOV R3,#00H
MOV R4,#00H
MOV R5,#00H
LOOPL: MOV R2,#00H
MOV A,R3
MOV DPTR,#1000H
MOVC A,@A+DPTR
MOV R2,A
MOV DPH,#20H
MOVX A,@DPTR
MOV B,A
MOV A,R2
MUL AB
LCALL PCDATAL
INC R3
CJNE R3,#0FH,LOOPL
;MOV A,R5
;PUSH ACC
LOOPH: MOV R2,#00H
MOV DPTR,#1000H ;给dptr赋初值 ,初值为表ai初始地址
MOV A,R4
MOVC A,@A+DPTR ;将表中值赋给a
MOV R2,A ;将a中值赋给r2
MOV DPH,#20H
MOVX A,@DPTR ;将xi值赋给a
INC DPL ;将DPTR低八位DPL加一,这样就能够保证xi与ai顺序相同的能一起取出
MOV B,A ;将xi值赋给b
MOV A,R2 ;将ai值取回
MUL AB ;ab做乘法
LCALL PCDATAH ;调用子程序
INC R4 ;r4加一
CJNE R4,#0FH,LOOPH ;判断循环次数
;MOV A,R6
;PUSH ACC
PROADD: MOV A,#00H
MOV A,R6
ADD A,R7
MOV DPTR,#2100H
MOVX @DPTR,A
MOV A,#00H
MOV A,R5
MOV DPTR,#2101H ;低位存放单元地址
MOVX @DPTR,A
SJMP $
PCDATAL: ADD A,R5 ;低八位相加,和存放在R5
XCH A,R5 ;将A中的和存到R5
JC JWB
CLR C ;清除标志位
RET ;返回主程序
PCDATAH: MOV A,B ;将B中值存放到A,以便与R6做加法
ADD A,R6
XCH A,R6
RET
JWB: INC R7 ;不用考虑高八位进位,所以只设置一个进位补偿就可以
SJMP PCDATAL
ORG 1000H
TABAI: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH ;ai表
END
显示不出正确答案啊,逻辑检查了也没有问题,还是没做出来。。。。有没有人在。。。