写作问题

问题描述

--------------------------------------------------- - - - - - - - 更新 - - - - - - - - - - - - - - - - - - ------------------

我正在尝试编写代码以从一个位置反转字符串并将其放置在另一个位置,但是在反转部分的开头我一直遇到问题。我想将字符串的最后一个字节加载到另一个寄存器中,但是出现一个我无法写的错误代码是:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
; Question 3 Assignment 3
; Department of Electrical and Computer Engineering
; Hana Ali
; The purpose of this code is to reverse a string and put it in R1
;**************************************************************************
          AREA RESET,CODE,READWRITE
          ENTRY
          ADR  R0,string1              ; R0 is a pointer to string1
          ADR  R1,stringRev            ; R1 is a pointer to stringRev
          MOV  R2,#0                   ; COUNTER
getLength LDRB R3,[R0]                 ; For every byte in R0
          CMP  R3,#0                   
          BEQ  prep                     ; If terminated,go to prep
          ADD  R2,#1                   ; Increment counter
          ADD  R0,#1                   ; Go to next byte in string
          B    getLength                ; Go back to loop
          
prep      ADR  R0,string1              ; R0 pointer to beginning of string
          MOV  R4,#0                   ; Counter for string reversal
          B    reverse                  ; Go to reversing

reverse   SUB  R2,R2,R4               ; R2 - R4 IN R2
          SUB  R2,#1                   ; R2 - R4 - 1 IN R2
          LDRB R5,[R0,R2]!            ; Loads byte R2 - R4 - 1,or length - iteration - 1,; into R5. ESSENTIALLY end of string
                                        
          CMP  R4,R2                   ; Compare current iteration with string length
          BEQ  STOP                     ; If reached length,stop
          STRB R5,[R1,R4]             ; Store R5 into location R1 + R4,or start + current
                                        ; iteration
          ADD  R4,#1                   ; Increment iteration
          B    reverse
STOP      B    STOP

string1   DCB  "Goodness GracIoUs Pan,0xD",0   
                                        ; Char array pointed to by string1
stringRev DCB   0                       ; Char array pointed to by stringRev
temp      DCB   0
          END

问题已经解决

STRB R5,[R1,R4]

最初,R0的起始地址为0x00000054,最后一个字节为0x0000006D。当我们开始循环时,我希望R0为0x0000006D([R0,R2] !,其中R0为0x00000054,R2是要复制的整个字符串的长度减去当前迭代的值减去1,因为我删除了最后一个0,并且R5为0x00000044(正确)。但是,当我开始存储时,出现“无法写入”错误。我不确定原因。任何帮助都将得到感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)