51单片机汇编语言实现千以内的乘除法计算器
时间: 2023-11-06 10:05:45 浏览: 57
以下是一个简单的51单片机汇编语言实现千以内的乘除法计算器的示例代码:
```
ORG 0H
MOV P0,#0FFH ;设置P0口为输入口
MOV P1,#0H ;设置P1口为输出口
MOV P2,#0H ;设置P2口为输出口
MAIN:
ACALL READ_NUM1 ;读取第一个数字
ACALL READ_NUM2 ;读取第二个数字
ACALL READ_OP ;读取运算符
ACALL CALC ;计算结果
ACALL DISPLAY ;显示结果
SJMP MAIN
READ_NUM1:
MOV R0,#4 ;设置循环次数
MOV A,#0H ;清零累加器
LOOP1:
MOV C,P0.0 ;读取P0.0口的值
JNC LOOP1 ;等待输入
ACALL DELAY ;延时去抖
MOV C,P0.0 ;再次读取P0.0口的值
JNC LOOP1 ;等待输入
ADD A,#0FH ;十进制转换
MOV B,A ;保存累加器的值
MOV A,P0 ;读取输入值
ANL A,#0FH ;取低四位
ADD A,B ;加上之前的结果
MOV B,A ;保存结果
DJNZ R0,LOOP1 ;循环4次结束
RET
READ_NUM2:
MOV R0,#4 ;设置循环次数
MOV A,#0H ;清零累加器
LOOP2:
MOV C,P0.0 ;读取P0.0口的值
JNC LOOP2 ;等待输入
ACALL DELAY ;延时去抖
MOV C,P0.0 ;再次读取P0.0口的值
JNC LOOP2 ;等待输入
ADD A,#0FH ;十进制转换
MOV B,A ;保存累加器的值
MOV A,P0 ;读取输入值
ANL A,#0FH ;取低四位
ADD A,B ;加上之前的结果
MOV B,A ;保存结果
DJNZ R0,LOOP2 ;循环4次结束
RET
READ_OP:
MOV R0,#10 ;设置循环次数
LOOP3:
MOV C,P0.0 ;读取P0.0口的值
JNC LOOP3 ;等待输入
ACALL DELAY ;延时去抖
MOV C,P0.0 ;再次读取P0.0口的值
JNC LOOP3 ;等待输入
MOV A,P0 ;读取输入值
CPL A ;取反
ANL A,#0FH ;取低四位
CJNE A,#0CH,LOOP3 ;如果输入的不是*或/,重新输入
MOV B,A ;保存运算符
RET
CALC:
MOV A,B ;读取运算符
CJNE A,#0CH,MUL1 ;如果是*,跳转到MUL1
MOV A,R1 ;读取第一个数字
DIV AB ;除以第二个数字
MOV R3,A ;保存商
MOV R4,B ;保存余数
SJMP CALC_END
MUL1:
MOV A,R1 ;读取第一个数字
MUL AB ;乘以第二个数字
MOV R3,A ;保存乘积的低8位
MOV R4,B ;保存乘积的高8位
CALC_END:
RET
DISPLAY:
MOV A,R3 ;读取结果的低8位
MOV B,R4 ;读取结果的高8位
MOV R0,#4 ;设置循环次数
LOOP4:
MOV C,#0AH ;除以10
DIV AB
MOV P2,C ;输出余数
INC P1 ;P1口指向下一位
DJNZ R0,LOOP4 ;循环4次结束
RET
DELAY:
MOV R7,#0FFH
DELAY_LOOP:
DJNZ R7,DELAY_LOOP
RET
END
```
这个程序通过检测P0.0口的状态,读取用户输入的数字和运算符,并通过P2口输出余数,P1口控制位数,从而实现了一个简单的千以内乘除法计算器。其中,乘法采用了MUL指令,除法采用了DIV指令,需要注意的是,DIV指令的第一个操作数必须是累加器A,除数在B寄存器中,商保存在A寄存器中,余数保存在B寄存器中。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)