16位MASM将此算法实现为代码(混淆)ASCII到十进制

时间:2013-11-13 18:21:08

标签: assembly decimal ascii masm

我需要用户输入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中?我是一个noobie。

1 个答案:

答案 0 :(得分:0)

我使用类似的东西来存储AX中的输入数字。您可以在gist.github.com上找到程序here

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