用MCS51单片机语言编程实现将12,34,56,78四个十进制数压缩BCD码存入0600H~0603H单元中,转换成二进制数码并用十六进制数表示,并存入起始地址为20H~23H的内存单元中
时间: 2024-01-08 09:04:57 浏览: 119
基于C语言编程MCS-51单片机原理与应用
5星 · 资源好评率100%
好的,我来为您解答这个问题。
首先,需要将四个十进制数转换成BCD码,可以采用除2取余法实现。具体来说,对于一个十进制数,先将它除以10,得到商和余数,商即为BCD码的高四位,余数即为BCD码的低四位。然后对商和余数再分别进行除以10和取余操作,得到BCD码的前两位和后两位。
下面是用MCS51单片机语言编写的程序实现将四个十进制数转换成BCD码,并存储到0600H~0603H单元中的代码:
```
MOV A,#12
DIV AB,#10
MOV R0,B
MOV A,#34
DIV AB,#10
MOV R1,B
MOV A,#56
DIV AB,#10
MOV R2,B
MOV A,#78
DIV AB,#10
MOV R3,B
MOV A,R0
SWAP A
ADD A,#60H
MOV 0600H,A
MOV A,R0
ADD A,#06H
MOV 0601H,A
MOV A,R1
SWAP A
ADD A,#60H
MOV 0602H,A
MOV A,R1
ADD A,#06H
MOV 0603H,A
MOV A,R2
SWAP A
ADD A,#60H
MOV 0604H,A
MOV A,R2
ADD A,#06H
MOV 0605H,A
MOV A,R3
SWAP A
ADD A,#60H
MOV 0606H,A
MOV A,R3
ADD A,#06H
MOV 0607H,A
```
接下来,需要将BCD码转换成二进制数码,并用十六进制数表示。可以采用将BCD码的低四位和高四位分别乘以10和1,然后相加得到十进制数,再将十进制数转换成十六进制数的方法实现。具体来说,对于一个BCD码,先将它的低四位乘以10,得到十进制数的个位,然后将BCD码的高四位乘以10,得到十进制数的十位,最后将个位和十位相加得到十进制数,然后将十进制数转换成十六进制数表示。
下面是用MCS51单片机语言编写的程序实现将BCD码转换成二进制数码,并用十六进制数表示,并存储到起始地址为20H~23H的内存单元中的代码:
```
MOV DPTR,#20H
MOV A,0600H
ANL A,#0FH
ADD A,A
ADD A,A
ADD A,A
ADD A,A
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
MOVX @DPTR,A
INC DPTR
MOV A,0601H
ANL A,#0FH
ADD A,A
ADD A,A
ADD A,A
ADD A,A
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
MOVX @DPTR,A
INC DPTR
MOV A,0602H
ANL A,#0FH
ADD A,A
ADD A,A
ADD A,A
ADD A,A
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
MOVX @DPTR,A
INC DPTR
MOV A,0603H
ANL A,#0FH
ADD A,A
ADD A,A
ADD A,A
ADD A,A
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
MOVX @DPTR,A
```
这样,将四个十进制数压缩BCD码存入0600H~0603H单元中,转换成二进制数码并用十六进制数表示,并存入起始地址为20H~23H的内存单元中的任务就完成了。
阅读全文