在 8051 中向右移位一个多字节 BCD 数
在这里,我们将看到一个问题,将某些多字节 BCD 数向右移。BCD 数移位两位(8 位)。
让我们考虑一个四字节 BCD 数(45 86 02 78)存储在位置 20H、21H、22H、23H。地址 10H 保存整个 BCD 数的字节数。所以执行这段代码后,内容将向右移位,20H 将保留 00H。
| 地址 | 值 |
|---|---|
| . . . | |
| 20H | 45 |
| 21H | 86 |
| 22H | 02 |
| 23H | 78 |
| . . . |
程序
CLRA;Clear the Register A MOVR2,10H;TakeByte Count INCR2;Increase R2 for loop MOVR1,#20H;Takethe address 20H into R1 LOOP: XCHA,@R1; Get content, which is pointed out by R1 value INCR1;IncreaseR1 for next location JNZR2, LOOP ;Check R2 is 0 or not to loop back HALT: SJMPHALT ;Stop the program
这里使用了 XCH 指令。通过使用此指令,寄存器 A 的值和 R1 指向的地址内容被交换。在 wapping 之后,地址向右移动一个字节,然后再次交换以放置旧值并获取新值。通过使用此过程,BCD 字节被移位。
计数器值一开始增加了 1,以便比字节计数多运行程序一次。如果不增加值,则最后一个字节将不会被移动,它将被丢弃。
输出
| 地址 | 值 |
|---|---|
| . . . | |
| 20H | 00 |
| 21H | 45 |
| 22H | 86 |
| 23H | 02 |
| 24H | 78 |
| . . . |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP