간단한 어셈블리코드 질문입니다 ㅠㅠ

조회수 787회

숫자 2개를 입력받아서

기존의 상수 젤 끝자리 2개와 비교해 일치하면 상수를 출력하는 프로그램을 만들고 있어요ㅜㅜ

WHILE문으로 일치할때까지 계속 비교하는 프로그램이에요! (문자열 입력받는 함수와 출력하는 함수 사용)

완전 초보라서 어떻게 해야할지 잘 모르겠어요 ㅠㅠ

MAIN SEGMENT
ASSUME CS:MAIN, DS:MAIN

      MOV AX, MAIN      ; Set up the Data Segment address
      MOV DS, AX

    MOV DS, AX          ; STUN문자열의 끝 2자리를 STUN2로 복사
    MOV ES, AX
    LEA SI, STUN+6
    LEA DI, STUN2
    CLD
    MOVSB
    MOVSB

    MOV BL, STUN2       ; STUN2 문자열을 BL에 저장



    MOV DL, '입력하세요'   
    CALL DISPALYC           ; 문자열 출력


    WHILE_:                 ; GUESS와 STUN뒷 2자리가 같으면 DO


            CALL GETC            ; 문자열 받기
            MOV GUESS, AL       ; AL을 GUESS로 이동
            MOV AH, 2H
            INT 21H

            CMP BL, AL          ; GUESS 와 BL을 비교
            JE END_WHILE        ; 같으면 종료
            INT 21H             ; 문자읽기
            JMP WHILE_          ; 루프

    END_WHILE

    MOV DL, STUN            ; 학번 출력
    CALL DISPLAYC           ; 문자열 출력

      MOV AH, 4CH             ; Terminate the sample program
      INT 21H


GETC    PROC
        MOV AH, 0H        ;  
        INT 16
        RET
GETC    ENDP



DISPLAYC PROC
        MOV AH, 2H
        INT 21H
        RET

DISPLAYC ENDP
MAIN ENDS


DATA SEGMENT
        STUN DW '21411861'
        STUN2 DW 2 DUP
        GUESS DW ?
DATA ENDS


     END
  • 간만에 보는 리얼모드 어셈블리코드네요. 숙제는 스스로 해야죠. dos api들 중에 01, 02 즉 입출력 정도 사용했네요. 어렵지 않으니 해보고 질문을 올리세요. 정영훈 2019.9.29 12:06

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)