String 汇编语言存储问题
我试图使汇编程序连接两个字符串。这是我的节目String 汇编语言存储问题,string,memory,assembly,arm,storage,String,Memory,Assembly,Arm,Storage,我试图使汇编程序连接两个字符串。这是我的节目 AREA Assignment4, CODE, READONLY ENTRY ;;;;;;;;;;Setting Up ADR r0, StrF ;Address of first block in destination ;;;String 1 ADR r1, Str1 ;Address of first string ADR r2, EoS ;
AREA Assignment4, CODE, READONLY
ENTRY
;;;;;;;;;;Setting Up
ADR r0, StrF ;Address of first block in destination
;;;String 1
ADR r1, Str1 ;Address of first string
ADR r2, EoS ;Address of EoS1
SUBS r2, r2,r1 ;Length of str1, counter
;;;;String2
ADR r3, Str2 ;Address of second string
ADR r4, EoS2 ;Address of EoS2
SUBS r4, r4,r3 ;Length of Str2
;;;;;;;;;;Performing Actions
;;;;First String
Loop LDRB r5,[r1],#1 ;Load next bit of "r1" in r5
STRB r5,[r0],#1 ;Store prev bit in memory at r0
SUBS r2, r2, #1 ;Decrement counter
CMP r2, #0 ;Compare our counter
BNE Loop ;Branch if counter != 0
;;;;;Second String
Loop2 LDRB r5,[r3],#1 ;Load next bit of "r3" to r5
STRB r0,[r5],#1 ;Store this bit in r0
SUBS r4, r4, #1 ;Decrement length counter
CMP r4, #0 ;Compare our counter
BNE Loop2 ;Branch if counter != 0
;; Testing the memory - Delete these lines later
ADR r0, StrF
loop3 LDRB r1,[r0],#1
B loop3
Finished B Finished
Str1 DCB "This is a test string1" ;Str1
EoS DCB 0x00
Str2 DCB "This is a test string2" ;Str2
EoS2 DCB 0x00
StrF DCB 0x00 ;Saving this
END
我的问题在第22+29行。我不知道如何成功地将当前字节存储到内存中;更具体地说,寄存器r0中的内存,最初由StrF初始化
关于如何修复我的STRB或STR有什么想法吗
一旦我通过那条线,我就会得到这个:
“错误65:0x00000082处的访问冲突:没有“写入”权限”
这就是我试图保存到StrF中的内存地址。你看到第一行的那个大“只读”了吗
由于strF与声明为readonly的代码位于同一区域,因此它当然不起作用
您应该将strF放在另一个声明为readwrite的区域中,但此时您将无法使用adr
总而言之,您应该以这样的方式设计例程:它们从调用者接收内存地址作为参数。我有这个问题,因此如果您使用keil,当您处于调试模式时,转到debug->memorymap,然后手动添加内存范围
0x00000048 ,0x0000011A
并检查读、写a/o执行情况
检查这一页
这是什么汇编语言?Big-Endian 7@JimMischelan汇编语言与特定的体系结构相关,您必须指定这是哪种语言/体系结构,否则没有人会不知道这是什么意思英特尔语法中的ARM