编写程序将R5,R6中的2个字节数据对半分成4个四节存入片内30H~33H 单元中
时间: 2024-02-11 12:06:02 浏览: 90
1编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.doc
5星 · 资源好评率100%
以下是将R5和R6中的两个字节数据对半分成四个四节存入片内30H~33H单元的汇编程序:
```
mov r0, #2 ; 设置计数器初值
mov r1, #30H ; 设置存储位置
loop:
lsr r2, r5, #4 ; 取R5的高4位
strb r2, [r1], #1 ; 存入30H单元,指针自动加1
lsl r2, r5, #4 ; 取R5的低4位
lsr r2, r2, #4 ; 取R5的低4位的高4位
strb r2, [r1], #1 ; 存入31H单元,指针自动加1
lsl r2, r5, #8 ; 取R5的低8位
lsr r2, r2, #8 ; 取R5的低8位的高4位
strb r2, [r1], #1 ; 存入32H单元,指针自动加1
lsr r2, r5, #12 ; 取R5的低12位的高4位
strb r2, [r1], #1 ; 存入33H单元,指针自动加1
lsr r2, r6, #4 ; 取R6的高4位
strb r2, [r1], #1 ; 存入30H单元,指针自动加1
lsl r2, r6, #4 ; 取R6的低4位
lsr r2, r2, #4 ; 取R6的低4位的高4位
strb r2, [r1], #1 ; 存入31H单元,指针自动加1
lsl r2, r6, #8 ; 取R6的低8位
lsr r2, r2, #8 ; 取R6的低8位的高4位
strb r2, [r1], #1 ; 存入32H单元,指针自动加1
lsr r2, r6, #12 ; 取R6的低12位的高4位
strb r2, [r1], #1 ; 存入33H单元,指针自动加1
subs r0, #1 ; 计数器减1
bne loop ; 如果计数器不为0,则跳转到loop标签处继续执行
```
这里使用了循环和移位指令来取出R5和R6中的四个四位数据并存储到片内30H~33H单元中。需要注意的是,存储时需要用到字节存储指令`strb`,并且每次存储完一个四节需要将存储指针自动加1。
阅读全文