{{위키데이터 속성 추적}}
{{CPU 정보
| 장치명칭 = MOS 6502
| 그림 = MOS 6502AD 4585 top.jpg
| 그림_크기 = 200px
| 설명문 =[[이중 직렬 패키지|DIP-40]]에 있는 6502 칩. 4자리 날짜 코드는 1985년 45주차(11월) 생산을 의미함.
| 생산시작 = {{시작 날짜와 나이|1975}}
| 생산종료 = 
| 최저속도 = 1
| 최고속도 = 3
| 최저속도단위 = MHz
| 최고속도단위 = MHz
| 최저FSB = 
| 최고FSB = 
| 최저FSB단위 = 
| 최고FSB단위 = 
| 최소공정 = 
| 최대공정 = 
| 설계회사 =
| 제조사1 = [[모스 테크놀로지]], [[로크웰 인터내셔널|로크웰]], [[시너텍]]
| 코어1 = 
| 소켓1 = 
| 아키 = MOS 6502
| 트랜지스터 = 3,510<ref>{{웹 인용|title=The MOS 6502 and the Best Layout Guy in the World |publisher=swtch.com |date=2011-01-03 |access-date=2014-08-09 |url=http://research.swtch.com/6502 |archive-date=2014-09-08 |archive-url=https://web.archive.org/web/20140908121520/http://research.swtch.com/6502 |url-status=live}}</ref>, 3,218<ref>{{웹 인용|title=MOnSter6502 A complete, working discrete transistors (i.e. not integrated all on a single chip) replica of the classic MOS 6502 microprocessor |publisher=monster6502.com |date=2017 |access-date=2017-05-01 |url=http://monster6502.com/ |archive-date=2017-05-12 |archive-url=https://web.archive.org/web/20170512051122/http://monster6502.com/ |url-status=live }}</ref>
| numinstructions = 56 (기본적으로 55)
| 데이터폭 = [[8비트]]
| 주소폭 = [[16비트]]
| pack1 = 40핀 [[이중 직렬 패키지|DIP]]
| 마이크로아키 = 
| 코어수 =
| GPU =
| L1캐시 =
| L2캐시 =
| L3캐시 =
| L4캐시 =
| 이전모델 = {{단순목록|
* [[모토로라 6800]]
*MOS 6501}}
| 후속모델 ={{단순목록|
* [[MOS 6510]]
* [[WDC 65C02]]
* [[WDC 65C816]]}}
| 품명1 =
| 품명2 =
}}
'''MOS 6502'''는 [[모스 테크놀로지]]사의 8비트 [[중앙 처리 장치|MPU]]이다. [[모토로라]]의 6809계열의 [[중앙 처리 장치|CPU]]로 분류되며 명칭 또한 [[인텔]] 계열이 CPU(중앙 처리 장치)라는 단어를 사용한 데 반해, 모토로라 계열은 MPU(Main Processing Unit)라는 용어를 사용한다.

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

== 예제 코드 ==
<syntaxhighlight lang="ca65">
; 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
</syntaxhighlight>

== 각주 ==
<references />

== 같이 보기 ==
* [[모스 테크놀로지]]

{{마이크로컨트롤러}}
{{MOS CPU}}
{{전거 통제}}

[[분류:65xx 마이크로프로세서]]
[[분류:8비트 마이크로프로세서]]