1,书上一到题目的要求是这样的“将内存地址0x3000开始的100个字内存填入0x10000001~0x10000064”字数据。。
代码是这样的
MOV R0 ,#0X3000
MOV R1,#0X10000001
MOV R2,#100
LOOP_1:
STR R1,[R0],#4 ;问下这里为什么要加4啊??难道一个地址相对应的内存空间存不下?? ADD R1,R1,#1
..................................
2, 还有个就是 将数据从源数据区Src(18内存字单元)拷贝到目标数据区Dst,要求以4字节拷贝,如果不足4字节时则以字尾单元拷贝。SRC:
.long 1,2,3,4,5,6,7,8,9,0xa,,,,,,,,,,,,,,,,,
DST:
.long 0,0,0,0,0,00,0,0,,,,,,,,,,,,,,,,,,
书上的代码是这样的。。
NUM EQU 18
AREA Copy_Data,CODE,READONLY
ENTRY
CODE32
START
LDR R0,=Src
LDR R1,=Dst
MOV R2,#NUM
MOV SP,#0x9000
MOVS R3,R2,LSR #2
BEQ Copy_Words
STMFD SP!,{R5-R8}
Copy_4Word ;进行快拷贝每次4个字 ;问下这里要拷贝4次,,每次都是LOMIA LDMIA R0!,{R5-R8} ;R0! {R5-R8}咋么不会重复的啊??就是,刚 STMIA R1!,{R5,R8} ;R0取出的地址是从0-3,然后R0自己会从变成 SUBS R3,R3,#1 ;从4-7开始传数据??? BNE Copy_4Word
LDMFD SP!,{R5-R8}
Copy_Words ;将剩余的数据以字为单位拷贝
ANDS R2,R2,#3
BEQ Stop
Copy_Word
LDR R3,[r0],#4
STR R3,[r1],#4 ;;问下这里咋么出现了小写的r0了啊??? SUBS R2,R2,#1
BNE Copy_Word
Stop
B Stop
LTORG
Src
DCD 1,2,3,4,5,6,7,8,9,0XA,0XB,0XC,0XD,0XE,0XF,0X10,0X11,0X12
Dst
DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
END |