如果让你用一8位的CPU去做一个能算出上万亿结果的加减乘除计算器程序,你的设计思路是?
发布网友
发布时间:2022-05-01 16:13
我来回答
共2个回答
热心网友
时间:2023-10-22 18:17
乘法思路 双字节乘法 也还是用单字节乘法指令完成
如果要再推广到更多字节,有必要用工具建立一个数学模型。
思路R2R3*R6R7=[R2*R3]*2^16+[R2*R7+R3+R6]*2^8+R3*R7
;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
真是麻烦,本来还以为外面卖的十二块一个的计算机贵了,现在自己遇到问题的时候,才知道真不简单,实际的工程里,会遇到许多意想不到的问题。
热心网友
时间:2023-10-22 18:18
用数组做
热心网友
时间:2023-10-22 18:17
乘法思路 双字节乘法 也还是用单字节乘法指令完成
如果要再推广到更多字节,有必要用工具建立一个数学模型。
思路R2R3*R6R7=[R2*R3]*2^16+[R2*R7+R3+R6]*2^8+R3*R7
;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
真是麻烦,本来还以为外面卖的十二块一个的计算机贵了,现在自己遇到问题的时候,才知道真不简单,实际的工程里,会遇到许多意想不到的问题。
热心网友
时间:2023-10-22 18:18
用数组做
热心网友
时间:2023-10-22 18:17
乘法思路 双字节乘法 也还是用单字节乘法指令完成
如果要再推广到更多字节,有必要用工具建立一个数学模型。
思路R2R3*R6R7=[R2*R3]*2^16+[R2*R7+R3+R6]*2^8+R3*R7
;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
真是麻烦,本来还以为外面卖的十二块一个的计算机贵了,现在自己遇到问题的时候,才知道真不简单,实际的工程里,会遇到许多意想不到的问题。
热心网友
时间:2023-10-22 18:18
用数组做