题目:
用8051汇编写两个16bit unsinged乘法(不能用MUL指令),原数据摆在40h~43h(low high), 结果摆在IDATA80h~81h(low high)。

我的解答:
    ORG 0000H
    AJMP Main
    ORG 0040H
Main:   MOV 80H,#00H
    MOV 81H,#00H
    MOV R0,#00H
    MOV A,40H
    RRC A
    JNC No;第一位不是1,不操作
    MOV 80H,42H
    MOV 81H,43H
    JMP No
Loop:   CJNE R0,#7,Next
    MOV A,41H;查完乘法低字节后查乘法高字节
Next:    CLR C
    RRC A
    JNC No
    MOV R2,A;保存A
    MOV A,R0
    MOV R1,A
Mul2:   CLR C
    MOV A,42H
    RLC A
    MOV 82H,A
    MOV A,43H
    RLC A
    MOV 83H,A
    DJNZ R1,Mul2;16位数左移R0次存放在82H~83H(Low High)
ADD16:  CLR C
    MOV A,80H
    ADD A,82H
    MOV 80H,A
    MOV A,81H
    ADDC A,83H
    MOV 81H,A;16位加法
    MOV A,R2;还原A
No:     INC R0
    CJNE R0,#16,Loop
    END

好像得不到理想结果,不知道错哪里?[em10]