IA模式表示:每次传送后地址+4;(After Increase)
DB模式表示:每次传送前地址-4;(Before Decrease)
多寄存器加载/存储指令共有8种模式(4个用与数据块的传输,4个用于栈操作)
指针的增长方式和方向是不同的,下图:
R1一开始指向的不是有效字,传第一个数据R5时是传到R1的上(因为是I方式,所以是向上存的方向)一个字的地址,即上图的4008H,而不是4004H。指针最后指向我们的最后一个数据存储单元的地址。
那么DB的方式的话,一开始指针指向的就是我们要存放数据的地址,传送前地址先加,那么最后指针指向的是最后一个数据存储单元的下一个地址。
stmia, 比如当前ro指向的内存地址是 0x1000,STMIA RO!,{R1-R7} 就是 首先把r1存入 0x1000,然后r2存入0x1004,然后r3存入0x1008,如果是32位的处理器就是每次加4个字节,以此类推把 r1-r7按照递增的地址存入。。。。这个r0!就是从r0的地址开始存的意思。。。
STMDB则是地址从r0开始减少,依次存储。。。你理解一下,很简单的