2014-11-25 8 views
0

몇 가지 문제가 있습니다. 어셈블리가 새로 도입되었지만 keybord 입력에서 두 개의 숫자를 읽는 작업이 예를 들어 입니다 [156,59].어셈블리 입력 숫자 입력

mov ah, 1h 
    int 21h 
    mov dl, al 
    mov ah, 2h 
    int 21h 

하지만 내가 어떻게 두 숫자를 읽는 아무 생각이 :

나는이 코드를 사용하여 하나의 숫자 키보드를 얻을 수 있다는 것을 알고. 누군가 나를 도울 수 있습니다.

EDIT: 

    marca db 'A$' 
... 
    READING: 
    mov ah,1 
    int 21h 
    mov text[bx+di] , Al 
    inc di 
    cmp Al , 13 
    JNE READING 
    mov text[bx+di] , '$' 
... 

나는 몇 가지 기능을 만들었지 만, 문제는이 기능을 사용하지 않는 출력 text 수 있다는 것입니다 :

mov dx, OFFSET text 
mov ah,09h 
int 21h 

그냥 아무 것도 반환하지 않습니다. 문제가 어디에 있습니까?

+1

선택한 구분 기호가 나타날 때까지 숫자를 여러 번 읽습니다. – Michael

+0

도우미가 쉽게 복사 & 붙여 넣기 및 컴파일 및 실행 및 분석 할 수있는 전체 프로그램을 게시하면 더 나은 답변을 얻을 수 있습니다. 여기를보십시오 : http://stackoverflow.com/help/mcve. 사용중인 어셈블러 (TASM 또는 MASM 또는 NASM 또는 ...)를 추가로 알려주십시오. – rkhb

+0

마지막 * marca db 'A $'*를 * text db 'A $'* 또는 * text db '?????'*로 변경하면 안됩니까? –

답변

0

사용자가 Enter (10 또는 13) 또는 "]"문자를 누를 때까지 루프에서이 코드를 사용할 수 있습니다. 우리가 알지 못하기 때문에 사용자가 입력 할 문자가 몇 개인 지, 충분한 공간이있는 변수에 입력을 저장해야합니다. 또 다른 가능성은 사용자가 enter 키를 누를 때까지 홀 라인을 읽는 dos readLine 함수 (int 21h/ah = 0ah)를 호출하는 것입니다.