我是汇编语言的初学者。我正在尝试从输入字符串中提取两个数字。例如。一个字符串输入,如“22 * 158”。我想分开并保存第一个数字,第二个数字和“*”。每个人都在不同的缓冲区。
这是我到目前为止所提出的。拜托,如果你知道更好的方式或最简单的方式帮助我。
INBUF DB 100, ?, 100 DUP ?
SPACE EQU ' ' ;define space character
ANUM1 DB 3, ?, 3 DUP ?
GETNUM1: ; To know how many digit in the first number
LEA SI, INBUF+2 ;Point to the input I got
CMP [SI], SPACE
JE GET1
INC CL ; increament the number of digit in the first number
INC SI ; pint to the next character
JMP GETNUM1 ; back to loop
然后,循环返回按照CL大小递减SI,并将每个SI移动到指向ANUM1的DI,如下所示:
SAVENUM1:
MOV AL, CL
LEA DI, ANUM1
LOOP2:
DEC SI
MOV DH, [SI]
DEC DI
DEC AL
MOV B[DI], DH
CMP AL, 0
JNE LOOP2
RET
然后对第二个数字重复相同的事情。