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