把片内 RAM 地址 30H 的单字节无符数转变为 3 位 BCD 码,并存于 40H 起的连续 3 个地址单元,40H 存个位,41H 存十位,42H 存百位。
时间: 2024-06-06 09:07:44 浏览: 7
假设待转换的无符号数为X,则将X除以10得到的商为十位数,余数为个位数。将商和余数分别转换成BCD码存储即可。
具体过程如下:
1. 将RAM地址30H的无符号数读入寄存器A中。
2. 将A寄存器的值除以10,商存放在寄存器B中,余数存放在寄存器A中。
3. 将B寄存器的值转换成BCD码存储到40H地址单元中。
4. 将A寄存器的值转换成BCD码存储到41H地址单元中。
5. 将寄存器A清零,再将B寄存器的值除以10,商存放在A寄存器中,余数存放在B寄存器中。
6. 将A寄存器的值转换成BCD码存储到42H地址单元中。
具体代码实现如下:
MOV A, 30H ;将RAM地址30H的无符号数读入A寄存器
DIV A, #10 ;将A寄存器的值除以10,商存放在B寄存器中,余数存放在A寄存器中
MOV R1, #40H ;将R1寄存器的值设为40H
MOV DPTR, #R1 ;将DPTR寄存器的值设为R1寄存器的值,即40H
MOV A, B ;将B寄存器的值存入A寄存器中
CALL BCD_CONV ;调用BCD_CONV子程序将A寄存器的值转换成BCD码存储到40H地址单元中
INC R1 ;将R1寄存器的值加1,即指向41H地址单元
MOV DPTR, #R1 ;将DPTR寄存器的值设为R1寄存器的值,即41H
MOV A, #0 ;将A寄存器清零
MOV A, B ;将B寄存器的值存入A寄存器中
CALL BCD_CONV ;调用BCD_CONV子程序将A寄存器的值转换成BCD码存储到41H地址单元中
MOV A, #0 ;将A寄存器清零
MOV A, B ;将B寄存器的值存入A寄存器中
MOV R1, #42H ;将R1寄存器的值设为42H
MOV DPTR, #R1 ;将DPTR寄存器的值设为R1寄存器的值,即42H
CALL BCD_CONV ;调用BCD_CONV子程序将A寄存器的值转换成BCD码存储到42H地址单元中
BCD_CONV: ;BCD转换子程序
PUSH ACC ;将ACC寄存器的值入栈
ANL A, #0FH ;将A寄存器的低4位与0FH按位与,保留低4位
ADD A, #90H ;将A寄存器的低4位加上90H,转换成BCD码
DA A ;将A寄存器的值进行BCD调整
POP ACC ;将栈顶值出栈到ACC寄存器中
RL A ;将A寄存器的值左移4位,为高4位腾出空间
ANL A, #0FH ;将A寄存器的低4位与0FH按位与,保留低4位
ADD A, #90H ;将A寄存器的低4位加上90H,转换成BCD码
DA A ;将A寄存器的值进行BCD调整
RET ;返回主程序
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)