TITLE LOOP.ASM
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
.CODE
MAIN:
MOV AX, @DATA
MOV DS, AX
MOV CX, 8H
MOV AL, 3AH
AGAIN1:
MOV DL, AL
;MOV DL, 3AH
SUB DL, CL
MOV AH, 02H
INT 21H
LOOP AGAIN1
;
MAINOUT:
MOV AH, 4CH
INT 21H
END MAIN
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
.CODE
MAIN:
MOV AX, @DATA
MOV DS, AX
MOV CX, 8H
MOV AL, 3AH
AGAIN1:
MOV DL, AL
;MOV DL, 3AH
SUB DL, CL
MOV AH, 02H
INT 21H
LOOP AGAIN1
;
MAINOUT:
MOV AH, 4CH
INT 21H
END MAIN
어셈블리어 공부를 해본 적이 있다면,
출력결과를 예상해보기 보란다
'23456789' 라고 추측하였기를..
하지만,
어셈블러를 통해 해석 후 실행시켜보면,
출력결과는 아마도
2!@$%!%@#&^
이따구 모양이 나올 것이다
도대체, 왜 그러는가;
물론, MOV DL, AL 명령을 MOV DL, 3AH 로 수정하면,
원하는 결과를 얻을 수 있다.
그냥 그냥 그런데로 넘어갈까 하다가,
당연히 바르게 돌아갈꺼 같은 코드가 엉뚱한 결과를 내버리니,
도저히 참을 수가 없어서,
원인분석을 좀 해보려고 미친듯이 삽질하다가 결국 포기해버렸다. OTL;
혹시, 원인을 발견하셨다면
저에게 뜨거운 감동을 전해주세요~*
'Computer > 끄적임' 카테고리의 다른 글
| 실제크기사진보기 팝업창 띄울 때 (0) | 2006/07/06 |
|---|---|
| MySQL 쿼리의 자동으로 형변환 되는 모습^^;; (0) | 2006/07/05 |
| 쪼인할때, 서로다른 테이블의 서로같은 컬럼명은 어떻게 구별해서 뿌려줄까 (2) | 2006/07/05 |
| 왜 자꾸 스킨이 깨지는 걸까ㅠㅠ; (0) | 2006/06/30 |
| 오랜만에 만나본 정말, 완벽한 버그ㅋ (2) | 2006/05/06 |
| 공부할수록 모르는게 많아진다? (3) | 2006/01/18 |


MASM.EXE




인터럽트 호출후 AL값이 변하는 군요.
INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
AH = 02h
DL = character to write
Return: AL = last character output (despite the official docs which state
nothing is returned) (at least DOS 2.1-7.0)
Notes: ^C/^Break are checked, and INT 23 executed if pressed
standard output is always the screen under DOS 1.x, but may be
redirected under DOS 2+
the last character output will be the character in DL unless DL=09h
on entry, in which case AL=20h as tabs are expanded to blanks
if standard output is redirected to a file, no error checks (write-
protected, full media, etc.) are performed
감사합니다ㅠㅠ;
저도 분명히 AL 값이 어디선가 바뀐다고 판단해서 루프를 돌면서 AL 값을 (INT 21H,AH=02H) 명령을 통해서 수 차례 확인해본 결과, 바뀌지 않고 일정한 값이 나옴을 확인하고서, 도대체 모가 어떻게 된건지 전혀 이해를 못했는데, 지금 보니까, 방금전에 출력했던 문자가 AL 안으로 들어가 버리는 거였군요;
그러니까, 당연히 AL에 있는 값을 확인해봤자 바뀌지 않는다고 판단할 수 밖에 없지ㅡㅡ;
AL 만 BL 로 살짝 바꿔주니까, 잘 돌아가더군요ㅋ
아무튼, 중요한 깨달음을 하나 얻었습니다. 출력값이 똑같다고 변수의 값이 바뀌지 않고 있다고 판단한 것이 제가 헤매었던 이유였네요ㅡㅡ;; 정말, 다소 황당하며 아~ 그럴 수도 있구나 하는 깨달음을 얻었습니다