Как сохранить строку чисел последовательно? - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь проанализировать строку, такую ​​как «20 × 30», сохраняя 20 в одной ячейке памяти или регистра, затем 30 в другой ячейке памяти. Я могу сделать это с однозначными целыми числами, такими как «2 × 3», однако я не уверен в том, чтобы хранить более 1 цифры последовательно.

Я попытался сохранить первую цифру в ячейке памяти, затем зациклить и сместить ячейку памяти, чтобы сохранить вторую цифру. Проблема в том, что он создает 0x00000002 и 0x00000002, например, в памяти, а не 22.

   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, а не 02 02. Я понимаю, что цикл в настоящее время бесконечно сохраняет 02 в памяти; однако я верю, что смогу это исправить.

...