MOS 6502

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
6502 칩

MOS 6502는 MOS 테크놀로지사의 8비트 MPU이다. 모토로라의 6809계열의 CPU로 분류되며 명칭 또한 인텔 계열이 CPU(중앙 처리 장치)라는 단어를 사용한 데 반해, 모토로라 계열은 MPU(Main Processing Unit)라는 용어를 사용한다.

프로세서 레지스터 개수가 인텔 계열의 CPU에 비해 적으나, 제로 페이지라는 메모리 에리어 중 특수한 영역을 임시 기억공간으로 활용하여 프로세서 레지스터 부족분을 메운다. 입출력을 위한 주소 공간이 별도로 준비되어 있지 않기 때문에 메인 메모리의 일정 부분을 입출력으로 사용하는 메모리 맵 입출력 방식으로 동작한다.

예제 코드[편집]

; TOLOWER:
;
;   Convert a null-terminated character string to all lower case.
;   Maximum string length is 255 characters, plus the null term-
;   inator.
;
; Parameters:
;
;   SRC - Source string address
;   DST - Destination string address
;
        ORG $0080
;
0080  00 04    SRC     .WORD $0400     ;source string pointer ($40)
0082  00 05    DST     .WORD $0500     ;destination string pointer ($42)
;
0600                   ORG $0600       ;execution start address
;
0600  A0 00    TOLOWER LDY #$00        ;starting index
;
0602  B1 80    LOOP    LDA (SRC),Y     ;get from source string
0604  F0 11            BEQ DONE        ;end of string
;
0606  C9 41            CMP #'A'        ;if lower than UC alphabet...
0608  90 06            BCC SKIP        ;copy unchanged
;
060A  C9 5B            CMP #'Z'+1      ;if greater than UC alphabet...
060C  B0 02            BCS SKIP        ;copy unchanged
;
060E  09 20            ORA #%00100000  ;convert to lower case
;
0610  91 82    SKIP    STA (DST),Y     ;store to destination string
0612  C8               INY             ;bump index
0613  D0 ED            BNE LOOP        ;next character
;
;     NOTE: If .Y wraps the destination string will be left in an undefined
;           state.  We set carry to indicate this to the calling function.
;
0615  38               SEC             ;report string too long error &...
0616  60               RTS             ;return to caller
;
0617  91 82    DONE    STA (DST),Y     ;terminate destination string
0618  18               CLC             ;report conversion completed &...
0619  60               RTS             ;return to caller
;
                       .END

같이 보기[편집]