왜 안되는 거지?

By | 2005/11/27

오늘도 배우는 느낌으로 어셈책을 펼쳐들었다.

(IBM PC Assembly Language and Programming 5판)

자, 오늘은 8장을 해볼까나?

비디오와 키보드 처리 입문이군.

어느 정도 읽어보니 예제가 나오는 것을 확인하였다.

예제를 asm파일로 만들어서 어셈블링과 링킹을 하고 나서

두근거리는 마음으로

실행문을 치고 엔터!

그러나 엉뚱한 화면만 나오는 것이다.

원래는 ASCII문자들이 다 나와야 한다던데

이건 문자도 아니고 뭐지…

도대체 무엇이 잘못된 거지.

알 수가 없네.

원서라도 보고 싶은데, 책이 없어.

혹시 여기 오시는 분 중에 뭐가 잘못되었는지 아시면 덧글 적어주세요.^^

예제

TITLE A08DISAS  (COM) Display ASCII character set
.MODEL SMALL
.CODE
ORG   100H

BEGIN:  JMP SHORT A10MAIN
ASCHAR  DB  00, ‘$’
;           Main procedure:
.286  ; ——————-
A10MAIN PROC  NEAR
       CALL  B10SCREEN
       CALL  C10CURSOR
       CALL  D10DISPLY
       MOV   AX,4C00H
       INT   21H
A10MAIN ENDP

B10SCREEN PROC  NEAR
         PUSHA
         MOV AX,0600H
         MOV BH,07
         MOV CX,0000
         MOV DX,184FH
         INT 10H
         POPA
         RET
B10SCREEN ENDP

C10CURSOR PROC  NEAR
         PUSHA
         MOV AH,02H
         MOV BH,00
         MOV DX,0800H
         INT 10H
         POPA
         RET
C10CURSOR ENDP

D10DISPLY PROC
         PUSHA
         MOV CX,256
         LEA DX,ASCHAR
D20:      CMP ASCHAR,08H
         JB  D30
         CMP ASCHAR,0DH
         JBE D40
D30:      MOV AH,09H
         INT 21H
D40:      INC ASCHAR
         LOOP D20
         POPA
         RET
D10DISPLY ENDP
         END BEGIN

7 thoughts on “왜 안되는 거지?

  1. NoSyu

    이건 다시 해봐도 되지 않는다.
    조금 더 배운 다음에 해봐야겠다.

    Reply
  2. 아가페

    저두 이것을 해보았습니다.. 안되더군요..
    근데 맨 윗부분에 메인프로시저로 점프하는 부분을 지우고
    다른 예제들 처럼 데이터 세그먼트를 정의하고
    mov AX,@data
    mov DS,AX
    요거 코드세그먼트에 추가하니 되더라구요…
    나중에 제가해본 소스코드 올려드리겠습니다..(지금은 학교라서 ..;;)
    책에 나온 아스키코드 하고는 조금 다르게 나오던데…;;; 이유는 잘 모르겠고..그럼 수고하십시요

    Reply
  3. NoSyu

    /아가페/
    반갑습니다.
    그러고보니 이 글을 작성한지 어언 1년이 다되어가네요.;;
    확인해 본다는 걸 계속 미루다가 덧글을 적어주셔서 알았습니다.
    네.. 코드 기다리겠습니다.^^

    Reply
  4. 아가페

    TITLEA08DISAS
    .MODEL SMALL
    .DATA
    ASCHARDB 00, ‘$’

    .286
    .CODE
    A10MAINPROC NEAR
    MOV AX,@data
    MOV DS,AX
    CALL B10SCREEN
    CALL C10CURSOR
    CALL D10DISPLY
    MOV AX,4C00H
    INT 21H
    A10MAINENDP
    —————- 중간 생략 ————-
    END A10MAIN

    이렇게 고치니까 되더라구요.. 잘 된건진 잘 모르겠지만..;;
    저는 지금 처음으로 어셈블리를 공부하고 있는 왕초보중에 왕초보 입니다.
    원코드에서 왜 JMP를 했는지.. ORG는 뭘 의미하는지를 모르겠더라구요;;

    Reply
  5. NoSyu

    /아가페/
    소스 고맙습니다.
    어셈 안 본지 몇 달이 지났고, 그 때 제대로 배우지 않아 혼란이 오네요.^^
    나중에 다시 배울 때 다시 보겠습니다.
    중간고사 시즌이라고 하는데, 시험 잘 보시길…^^

    Reply
  6. 태웅

    역시…컴퓨터도사셨구나 ㅎㅎㅎ

    보통분은 아니신줄알았습니다..

    전 왕왕왕초보입니다…컴퓨터가 좋아 컴공을 선택했지만

    막상 아무것도 할줄 모른다는….계속 학교다니는게 두렵네요 ㅜ

    무슨말인지 하나도 모르겠고 에혀

    Reply
  7. NoSyu

    /태웅/
    도사는 아니에요.^^
    저도 아직 저 문제를 해결하지 못해서..^^ㅜㅜ
    전 빨리 복학해서 전공 배우고 싶어요.
    1학년 교양만 듣고 와서
    어디 가서 ‘전공이 컴퓨터 공학입니다.’라는 말을 못하겠더라구요.ㅜㅜ

    Reply

Leave a Reply