如何顺序存储一串数字?

时间:2019-04-12 14:19:47

标签: arm store keil

我正在尝试分析一个字符串,例如“ 20×30”,将20存储在一个内存或寄存器位置,然后将30存储在备用存储位置。我可以使用诸如“ 2times3”之类的一位整数来完成此操作,但是我不确定是否要顺序存储多于一位。

我尝试将第一个数字存储到存储位置,然后循环并移动存储位置以存储第二个数字。问题是它在内存而不是22中创建了0x00000002和0x00000002例如。

   AREA Lab6, CODE, READONLY
ENTRY
 LDR r0,=ASCII_STRING ;Load ASCII string into r0 for processing  
 LDR r2,=operand_1  ;Create essentially a variable that the numbers can be stored to
 LDR r3,=operand_2 ; Load an inititial value of 0 into register 3
 MOV r5,#0x0
 MOV r6,#0x0
numbers
    LDRB r1,[r0]
    CMP r1,'9'
    BHI letters
    CMP r1,'0'
    BLS stop
    BHI convertnumbers
    CMP r1,'G'
    BEQ stop
letters
    CMP r1,'t'
    MOVEQ r4,'t'
    ADDEQ r0,#5
    BEQ numbers2
    CMP r1,'a'
    MOVEQ r4,'a'
    ADDEQ r0,#3
    BEQ numbers2
    BNE stop

convertnumbers
    SUB r1,r1,#0x30
    STRB r1,[r2,r5]
    ADD r5,r5,#1
    B numbers   

numbers2
    LDRB r1,[r0]
    CMP r1,'9'
    BHI letters
    CMP r1,'0'
    BLS stop
    BHI convertnumbers2
    CMP r1,'G'
    BEQ stop
convertnumbers2
    SUB r1,r1,#0x30
    STRB r1,[r3,r5]
    ADD r6,r6,#1
    B numbers


stop b stop


    AREA asciiCode, DATA, READONLY
ASCII_STRING  DCB "2times3",'G'  ;ASCII code string
    AREA binary_form, DATA, READWRITE
operand_1  SPACE 20   ;area to store converted binary string
operand_2 SPACE 20 ; op2

   END

操作数_1的有效地址处的内存值应为22而不是0202。我意识到当前循环无限地将02存储到内存中;但是,我相信我可以解决这个问题。

0 个答案:

没有答案