- ;AA55*4D5A=337772E2
- MOV R0,#0AAH
- MOV R1,#055H
- MOV R2,#04DH
- MOV R3,#05AH
- CALL MUL_16
- ;R0:33 R1:77 R2:72 R3:E2
- JMP $
- ;----------------16位乘法(32位乘积)----------------
- ;输入:R0:被乘数高8位 R1:被乘数低8位 R2:乘数高8位 R3:乘数低8位
- ;输出:R0~R3 (R0为高字节,不影响任何标志位)
- MUL_16:
- PUSH 4
- PUSH ACC
- PUSH B
- PUSH PSW
- MOV A,R0
- MOV B,R2
- MUL AB
- XCH A,R0
- XCH A,B
- XCH A,R0
- XCH A,R1
- MOV 4,A
- MOV A,R3
- MUL AB
- XCH A,R2
- XCH A,B
- ADD A,R1
- MOV R1,A
- CLR A
- ADDC A,R0
- MOV R0,A
- MOV A,4
- MUL AB
- ADD A,R2
- XCH A,4
- XCH A,B
- ADDC A,R1
- MOV R1,A
- CLR A
- ADDC A,R0
- MOV R0,A
- MOV A,R3
- MUL AB
- MOV R3,A
- MOV A,B
- ADD A,4
- MOV R2,A
- CLR A
- ADDC A,R1
- MOV R1,A
- CLR A
- ADDC A,R0
- MOV R0,A
- POP PSW
- POP B
- POP ACC
- POP 4
- RET
- END
复制代码 |