8051 中的二进制到 BCD 转换
在这个问题中,我们将学习如何将一个 8 位二进制数转换为其等值的 BCD 数。二进制数存储在位置 20H 处。转换完成后,结果将存储在 30H 和 31H 处。30H 处保存 MS 部分,31H 处保存 LS 部分。
因此,我们假设数据是 D5H。程序将 D5H 的二进制值转换为 BCD 值 213D。
| 地址 | 值 |
|---|---|
| . . . | |
| 20H | D5 |
| 21H | |
| . . . |
程序
MOVR1,#20H;Takethe address 20H into R1 MOVA,@R1;Takethe data into Acc MOVB,#0AH;LoadB with AH = 10D DIVAB ;DivideA with B MOVR5,B;Storethe remainder MOVB,#0AH;LoadB with AH = 10D DIVAB ;DivideA with B MOVR1,#30H;Loaddestination address MOV@R1,A;Storethe MS portion MOVA,B;LoadB content to A SWAPA;Swapthe nibbles ADDA,R5;Addstored remainder with A INCR1;Increasethe address MOV@R1,A HALT: SJMPHALT
这里,我们只是将二进制数放入了累加器。然后除以累加器的 0AH(10D)的内容。因此,余数部分存储在一个单独的寄存器中。稍后将它相加。再次使用 0AH 除数商,并生成 MS 位。存储 MS 位后,将寄存器 B 中的数字获取到累加器中。交换累加器的半字节以在 LS 位生成四个零。然后将先前存储的余数相加以生成结果。
输出
| 地址 | 值 |
|---|---|
| . . . | |
| 20H | D5 |
| 21H | |
| . . . | |
| 30H | 02 |
| 31H | 13 |
| . . . |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP