我正在尝试分析一个字符串,例如“ 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存储到内存中;但是,我相信我可以解决这个问题。