2014-04-13 3 views
0

숫자로 된 문자열을 얻고 있습니다. 정수로 된 각 숫자를 변환하기 위해 문자로 읽으려고합니다.어셈블리 x86 문자로 문자열을 읽으십시오.

예 입력 : 54321

내가 어떤 작업을 할 숫자 값 54321로 변환해야합니다.

내가 당신이 나에게 논리 또는 그렇게하는 것이 유용 8086에 대한 함수를 말할 수있는 적어도 경우

STRING      DB  20,0 
          RESB 20 

    ;;;;;;;;; Code here ;;;;;;;;; 

    MOV      DX,STRING 
    MOV      AH,0Ah 
    INT          21h 

을 읽을 사용하고 기능입니다. 감사합니다.

답변

1

문자열은 단지 배열입니다. 첫 글자는 예를 들어 "edx"의 두 번째 글자 "edx + 1"의 두 번째 글자 "edx + 2"의 세 번째 글자입니다.

이 계산을 사용하면 글자를 정수로 다시 변환 할 수 있습니다.

'chardigit'- 48 = integerdigit

ASCII가 '0'여기서 48하는 예이므로이있다 :이 알기 바란다

"123" 

'1' (or 49 in dec) - 48 = 1 
'2' (or 50 in dec) - 48 = 2 
'3' (or 51 in dec) - 48 = 3 

.

+0

STRING + 1은이 DOS 호출 (INT 21H, 게시물에 21H가 표시되지 않음)을 사용하여 입력 한 문자 수 (반환 키 제외)를 포함하며 입력 된 데이터는 STRING + 2에서 시작합니다. – rcgldr

+0

예 21h를 편집했습니다 :)이 경우 STRING + 2에서 STRING + 22까지 내 번호를 확인해야합니다. STRING 크기가 20이기 때문입니다. 그리고 만약 'STRING + 2'에 내 번호가 '1234'이라면 1 또는 4를 찾을 것입니까? – r4id4

+0

이 10 진수 값은 기본 10 자리 시스템을 사용합니다. –