프로그래밍

 3198, 1/160 회원가입  로그인  
   sdw2648
   어셈블리 종결자분 계신가요 질문...

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2932 [복사]


TITLE HW4 (EXE)

STACK        SEGMENT PARA STACK        'STACK'
                        DW 32 DUP(0)
STACK         ENDS

DATASEG SEGMENT        PARA        'DATA'
;MYPLACE DB 'II$'
MYPLACE DB        'I like ice cola and my big pig like Ipad$';I=7
INUM         DB         '00$'
DATASEG        ENDS

CODESEG        SEGMENT        PARA        'CODE'
MAIN        PROC        FAR
                ASSUME        SS:STACK,        DS:DATASEG,        CS:CODESEG
                
                MOV AX, DATASEG
                MOV DS,        AX
                MOV AX, 'Ii'
                MOV CX, 40
                
                LEA SI, MYPLACE
LOOP1:                
                CMP [SI], AH
                JE        LOC1
                CMP [SI], AL
                JE        LOC1
                JMP LOC2
LOC1:
                INC DX
LOC2:
                INC SI
                DEC CX
                JNZ LOOP1
                
;binary to ascii                
                MOV AX, DX
                MOV CX, 10
                LEA SI, INUM+1
LOOP2:
                CMP AX, CX
                JB         LOC3
                XOR DX, DX
                DIV CX
                OR         DL, 30H
                MOV [SI], DL
                DEC SI
                JMP LOOP2
LOC3:
                OR        AL, 30H
                MOV [SI], AL

                MOV AH, 09H
                LEA DX,        INUM
                INT 21H
                
                MOV AX,        4C00H
                INT        21H

MAIN         ENDP
CODESEG ENDS
                END MAIN

다 잘되는데 어셈블, 링크후 출력을 하면 이상한 값이 출력됩니다...
알파벳을 카운트하는 과정을 지워버리고 직접 DX에 값을 넣어 출력해보면 정상적으로 출력되는것으로 보아 카운트 과정에 뭔가 문제가 있는것 같긴 한데
전 도대체 뭐가 문제인지를 알수가 없네요;;
masm 6.11로 어셈블, 링크했습니다

  Hit : 4379     Date : 2011/04/03 02:01