-2

ASCII 文字のユーザー入力を取得し、それを 10 進文字に変換する必要があります。これは私が考えたアルゴリズムですが、コードで表示する方法がわかりません。アイデア?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

それをどのようにダイレクトマスに入れますか?私は初心者です。

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 に答える