用MCS51单片机语言将存入0600H~0603H单元中的四个十进制数的压缩BCD码如12,34,56,78,转换成二进制数码用十六进制数表示,并存入起始地址为20H~23H的内存单元中
时间: 2024-03-19 21:46:31 浏览: 134
十六进制数据转换BCD码
3星 · 编辑精心推荐
好的,这道题目和上一个问题很相似,只是把存储BCD码的单元改成了0600H~0603H,需要将这些BCD码转换成二进制数码并用十六进制数表示,然后存储到起始地址为20H~23H的内存单元中。
下面是用MCS51单片机语言编写的程序实现将存储在0600H~0603H单元中的四个十进制数的压缩BCD码如12,34,56,78转换成二进制数码用十六进制数表示,并存储到起始地址为20H~23H的内存单元中的代码:
```
MOV A,0600H
ANL A,#0FH ;获取第一个数字的十进制个位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制个位数转换为二进制数并乘10
MOV DPL,#20H
MOVX @DPTR,A ;存储转换后的数
INC DPTR
MOV A,0600H
ANL A,#F0H
SWAP A
ANL A,#0FH ;获取第一个数字的十进制十位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制十位数转换为二进制数并乘10
MOVX @DPTR,A ;存储转换后的数
INC DPTR
MOV A,0601H
ANL A,#0FH ;获取第二个数字的十进制个位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制个位数转换为二进制数并乘10
MOVX @DPTR,A ;存储转换后的数
INC DPTR
MOV A,0601H
ANL A,#F0H
SWAP A
ANL A,#0FH ;获取第二个数字的十进制十位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制十位数转换为二进制数并乘10
MOVX @DPTR,A ;存储转换后的数
INC DPTR
MOV A,0602H
ANL A,#0FH ;获取第三个数字的十进制个位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制个位数转换为二进制数并乘10
MOVX @DPTR,A ;存储转换后的数
INC DPTR
MOV A,0602H
ANL A,#F0H
SWAP A
ANL A,#0FH ;获取第三个数字的十进制十位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制十位数转换为二进制数并乘10
MOVX @DPTR,A ;存储转换后的数
INC DPTR
MOV A,0603H
ANL A,#0FH ;获取第四个数字的十进制个位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制个位数转换为二进制数并乘10
MOVX @DPTR,A ;存储转换后的数
INC DPTR
MOV A,0603H
ANL A,#F0H
SWAP A
ANL A,#0FH ;获取第四个数字的十进制十位数
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;将十进制十位数转换为二进制数并乘10
MOVX @DPTR,A ;存储转换后的数
```
这样就完成了将存储在0600H~0603H单元中的四个十进制数的压缩BCD码如12,34,56,78转换成二进制数码用十六进制数表示,并存储到起始地址为20H~23H的内存单元中的任务。
阅读全文