-2

我需要接受用户输入的 ASCII 字符,然后将其转换为十进制字符。这是我为此想到的算法,但不确定如何在代码中显示它。想法?它只需要 0-9 个字符,并将对此进行验证。我没有写过任何与 ASCII 相关的东西,也不确定使用什么语法。这是我的伪代码算法

Give it a counter variable: 
counter = 0
getCharacters( next character ) ; next ASCII character from left
while ( next character != CR(enter key)
    validate next character
    digit = next character - 30hex 
    counter = (counter * 10) + digit
end loop
return counter in AX

我将如何将其放入直接 masm 中?我是个菜鸟。

4

1 回答 1

0

我使用类似的东西将输入数字存储在AX. 您可以在 gist.github.com 上找到该过程

INDEC PROC
    PUSH BX
    PUSH DX
    XOR BX, BX
    XOR AX, AX
  READ:
    MOV AH, 1
    INT 21H
    CMP AL, CR
  JE END_READ
    CMP AL, LF
  JE END_READ
    CMP AL, '0'
  JNGE NON_INTEGER
    CMP AL, '9'
  JNLE NON_INTEGER
  MY_LOOP:
    AND AX, 000FH
    PUSH AX
    MOV AX, 10
    MUL BX
    POP BX
    ADD BX, AX
  JMP READ
  END_READ:
    MOV AX, BX
    POP DX
    POP BX
   RET
  NON_INTEGER:
    LEA DX, NON_NUM      ;; The NON_NUM is a `$` terminated string to display error
    MOV AH, 9
    INT 21H
  JMP READ
INDEC ENDP
于 2013-11-17T06:03:08.143 回答