[Assembly] 윈도 XP 콘솔창에서 01h input을 받을경우 오류..
글쓴이: gyxor / 작성시간: 수, 2005/09/21 - 8:23오후
윈도 xp에서의 콘솔창은 그 자체가 OS가 아니라 하나의 응용프로그램으로 알고있습니다.
그래서 그런지 이상한 오류가 나타납니다.
SEG1 SEGMENT X DB ? ORG 100H MOV AH,1 INT 21H DEC AL MOV X,AL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H MOV DL,X MOV AH,02H INT 21H MOV AH,4CH INT 21H SEG1 SEGMENT
위 코드는 COM 코드이고 A86 어셈블러로 어셈블 해봤습니다.
형식상의 문제가 아닌가해서.. 다른 형식으로 다 해봤습니다.
동일한 내용인
.MODEL SMALL .STACK 64 .DATA X DB ? .CODE A10MAIN PROC FAR MOV AX,@data MOV DS,AX MOV AH,1 INT 21H DEC AL MOV X ,AL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H MOV DL,X MOV AH,02H INT 21H MOV AH,4CH INT 21H A10MAIN ENDP END A10MAIN
축약형 코드 입니다. EXE파일입니다. MASM5.1로 어셈블해봤습니다.
STACKSG SEGMENT PARA STACK 'Stack' DW 32 DUP(0) STACKSG ENDS DATASG SEGMENT PARA 'Data' X DB ? DATASG ENDS CODESG SEGMENT PARA 'Code' MAIN PROC FAR ASSUME SS:STACKSG,DS:DATASG,CS:CODESG MOV AX,DATASG MOV DS,AX MOV AH,1 INT 21H DEC AL MOV X ,AL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H MOV DL,X MOV AH,02H INT 21H MOV AH,4CH INT 21H MAIN ENDP CODESG ENDS END MAIN
역시 동일한 내용인 재래식 EXE형입니다. MASM5.1 과 MASM6.15로도
해봤습니다.
모든 실행에서 다음과 같은 오류가 생깁니다.
(물론 어셈블되고 실행파일 생성은 잘 됩니다.)
프로그램을 실행시키고 처음에는 잘 돌아갑니다.
입력 아스키값보다 하나작은 문자를 출력하는 프로그램입니다.
2를 입력하면 1이 출력되고 B를 입력하면 A가 출력됩니다.
그런데 반복해서 실행을 하다보면 7번째 부터는 콘솔창에 입력 글자가 에코되지 않고
출력글자도 에코되지 않습니다.
D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC P O D:\MASM\Test>CCC D:\MASM\Test>CCC D:\MASM\Test>CCC D:\MASM\Test>CCC
또는 한영 key가 눌려져서 한글모드가 되어있거나 하는 괴이한 현상이 벌어집니다.
두번째 실행 때 부터는 화면에 에코가 안됩니다.
어디가 잘못된 것인지 설명부탁드립니다.
ps: MASM 버젼이 다르면 무슨 차이가 있는지 알려주시면 감사하겠습니다.
LINK.EXE 파일도 달라지나요?
Forums:
자답..
도스박스 라는 프로그램을 사용하니까 ..
이상한 현상이 없어졌습니다.
매우 유용하네요..
하지만 xp의 콘솔에서 나타난 저 현상은
도대체 어떻게 생긴 것인지 정말 이해가 안됩니다............
Re: 자답..
XP의 cmd.exe 콘솔창은 단지 도스의 명령라인과 최소부분들을 에뮬레이터 해논거라
메모리상태나, 기타 여러가지 유기적으로 연결되어있는 부분들이 구현되어 있지 않다고 알고있습니다.
하지만 DOSBOX등은 메모리상태 및 프로그램실행 환경(!)을 도스모드로
에뮬레이트 했기때문에 문제 없이 잘 실행이 되는거라고 봅니다.
내 마음속의 악마가 자꾸만 나를 부추겨.
늘 해왔던 것에 만족하지 말고 뭔가 불가능해 보이는 것을 하라고 말야.
댓글 달기