Computer/CPU

Intel 8085 [Intel / March 1976]

AICAT 2024. 9. 21. 01:30
반응형

 

 

인텔 8085("에이티-에이티-파이브")는 인텔이 1976년 3월에 출시한 8비트 마이크로프로세서이다. 이는 인텔이 개발한 마지막 8비트 마이크로프로세서이다. 이는 더 유명한 인텔 8080과 소프트웨어 바이너리 호환이 가능하며, 추가된 인터럽트 및 직렬 입출력 기능을 지원하기 위해 두 개의 소소한 명령어가 추가되었다. 그러나 이는 더 적은 지원 회로를 필요로 하여 더 간단하고 저렴한 마이크로컴퓨터 시스템을 구축할 수 있게 한다. 부품 번호의 "5"는 8085가 +5볼트(V) 전원 공급 장치를 사용하여 단일 +5볼트 전원 공급 장치를 사용한다는 사실을 강조한다. 이는 경쟁 제품인 Z80과 일치하며, 이는 8080에서 필요로 했던 +5V, -5V 및 +12V 전원 공급 장치를 필요로 하지 않는다. 이러한 프로세서는 CP/M 운영 체제를 실행하는 컴퓨터에서 사용할 수 있다. 8085는 40핀 DIP 패키지로 제공된다. 사용 가능한 핀의 기능을 최대화하기 위해 8085는 다중화된 주소/데이터(AD0-AD7) 버스를 사용한다.

 

그러나 8085 회로는 8비트 주소 래치가 필요하므로 인텔은 주소 래치가 내장된 여러 지원 칩을 제조했다. 여기에는 주소 래치, 2KB의 EPROM 및 16개의 I/O 핀이 있는 8755와 256바이트의 RAM, 22개의 I/O 핀 및 14비트 프로그래머블 타이머/카운터가 있는 8155가 포함된다. 다중화된 주소/데이터 버스는 8085와 이러한 메모리 및 I/O 칩 간의 PCB 트랙 수를 줄였다. 8080과 8085는 모두 데스크탑 컴퓨터용으로 Zilog Z80에 의해 가려졌으며, 이는 대부분의 CP/M 컴퓨터 시장과 1980년대 초중반의 급성장하는 홈 컴퓨터 시장의 일부를 차지했다. 8085는 내장된 직렬 I/O 및 다섯 개의 우선순위 인터럽트 덕분에 컨트롤러로서 오랜 수명을 가졌다. 이는 Z80 CPU가 갖지 못한 마이크로컨트롤러와 유사한 기능이다. 1970년대 후반에 DECtape II 컨트롤러 및 VT102 비디오 터미널과 같은 제품에 설계된 후, 8085는 이러한 제품의 수명 동안 새로운 생산에 사용되었다. 이는 일반적으로 데스크탑 컴퓨터의 제품 수명보다 길었다.

 

8085는 인텔 8080을 기반으로 한 전통적인 폰 노이만 설계이다. 8080과 달리 데이터 버스에 상태 신호를 다중화하지 않지만, 8비트 데이터 버스는 16비트 주소 버스의 하위 8비트와 다중화되어 핀 수를 40개로 제한한다. 상태 신호는 전용 버스 제어 신호 핀과 S0 및 S1이라는 두 개의 전용 버스 상태 ID 핀에 의해 제공된다. 핀 40은 전원 공급(+5V)에 사용되고 핀 20은 접지에 사용된다. 핀 39는 홀드 핀으로 사용된다. 프로세서는 nMOS 회로를 사용하여 설계되었으며, 나중에 "H" 버전은 인텔의 고성능 MOS 프로세스인 HMOS II("고성능 MOS")로 구현되었다. 이는 원래 고속 정적 RAM 제품을 위해 개발되었다. 단일 5볼트 전원 공급 장치만 필요하며, 이는 경쟁 프로세서와 유사하고 8080과는 다르다. 8085는 약 6,500개의 트랜지스터를 사용한다. 8085는 8224(클록 생성기)와 8228(시스템 컨트롤러)의 기능을 칩에 통합하여 통합 수준을 높였다. Z80과 같은 유사한 현대 설계와 비교할 때 단점은 버스를 디멀티플렉싱해야 한다는 점이다. 그러나 인텔 8155, 8355 및 8755 메모리 칩의 주소 래치는 직접 인터페이스를 허용하므로 8085와 이러한 칩은 거의 완전한 시스템을 이룬다.

8085는 새로운 인터럽트를 지원하기 위해 확장되었으며, 세 개의 마스크 가능한 벡터 인터럽트(RST 7.5, RST 6.5 및 RST 5.5), 하나의 마스크 불가능한 인터럽트(TRAP) 및 하나의 외부 서비스 인터럽트(INTR)를 포함한다. 이 다섯 개의 인터럽트 각각은 프로세서에 별도의 핀이 있어 별도의 인터럽트 컨트롤러 비용을 피할 수 있다. RST 7.5 인터럽트는 에지 트리거(래치)되며, RST 5.5 및 6.5는 레벨 감지이다. TRAP을 제외한 모든 인터럽트는 EI 명령어에 의해 활성화되고 DI 명령어에 의해 비활성화된다. 또한, SIM(인터럽트 마스크 설정) 및 RIM(인터럽트 마스크 읽기) 명령어는 8080 설계에서 유래하지 않은 유일한 명령어로, 세 개의 마스크 가능한 RST 인터럽트를 개별적으로 마스크할 수 있다. 정상적인 CPU 리셋 후 모든 세 개의 인터럽트는 마스크된다. SIM 및 RIM은 또한 글로벌 인터럽트 마스크 상태와 세 개의 독립적인 RST 인터럽트 마스크 상태를 읽고, 동일한 세 개의 인터럽트의 대기 인터럽트 상태를 읽고, RST 7.5 트리거 래치 플립플롭을 리셋하여(서비스 없이 대기 인터럽트를 취소) SOD 및 SID 핀을 통해 직렬 데이터를 송수신할 수 있게 한다. 이는 프로그램 제어 하에 독립적으로 수행된다. SIM 및 RIM은 각각 네 클록 사이클(T 상태)에서 실행되므로, SID를 샘플링하거나 SOD를 토글하는 것이 I/O 또는 메모리 매핑 포트를 통해 신호를 토글하거나 샘플링하는 것보다 훨씬 빠르게 가능하다. (이 방식으로 SID는 8085와 동시대의 6502 CPU의 SO ["Set Overflow"] 핀과 비교할 수 있다.)

8080과 마찬가지로 8085는 외부 생성 대기 상태(핀 35, READY)를 통해 느린 메모리를 수용할 수 있으며, HOLD 및 HLDA 신호(핀 39 및 38)를 사용하여 직접 메모리 액세스(DMA)를 제공한다. 8080에 비해 개선된 점은 8085가 피에조 전기 크리스탈을 직접 구동할 수 있으며, 내장된 클록 생성기가 크리스탈 주파수의 절반에서 내부 고진폭 2상 클록 신호를 생성한다는 점이다(예: 6.14 MHz 크리스탈은 3.07 MHz 클록을 생성). 내부 클록은 출력 핀에서 사용할 수 있어 주변 장치나 다른 CPU를 CPU와 동기화하여 구동할 수 있다. 8085는 외부 오실레이터에 의해 클록될 수도 있어 시스템 전체 공통 클록을 사용하는 동기식 다중 프로세서 시스템에서 8085를 사용할 수 있으며, 비디오 소스나 고정밀 시간 참조와 같은 외부 시간 참조에 CPU를 동기화할 수 있다.

8085는 8080의 바이너리 호환 후속 제품이다. 이는 8080의 전체 명령어 세트를 지원하며, 명령어 동작은 동일하며, CPU 플래그에 대한 모든 영향을 포함한다(AND/ANI 연산의 경우 AC 플래그 설정이 다름). 이는 8080에서 성공적으로 실행되는 대부분의 오브젝트 코드(ROM 또는 RAM의 프로그램 이미지)가 번역이나 수정 없이 8085에서 직접 실행될 수 있음을 의미한다. (예외는 타이밍에 민감한 코드와 AC 플래그 설정의 차이 또는 문서화되지 않은 CPU 동작의 차이에 민감한 코드이다.) 8085 명령어 타이밍은 8080과 약간 다르다. 일부 8비트 연산(INR, DCR 및 자주 사용되는 MOV r,r' 명령어 포함)은 한 클록 사이클이 더 빠르지만, 16비트 연산을 포함한 명령어(스택 연산 포함)는 일반적으로 한 사이클이 더 느리다. 물론 실제 8080 및/또는 8085는 발표된 사양과 특히 미묘한 세부 사항에서 다를 수 있다. (Z80의 경우는 그렇지 않다.) 이미 언급했듯이 SIM 및 RIM 명령어만이 8085에 새로 추가된 것이다.

프로세서에는 프로그래머가 접근할 수 있는 7개의 8비트 레지스터가 있으며, A, B, C, D, E, H 및 L로 명명된다. 여기서 A는 누산기로도 알려져 있다. 나머지 6개의 레지스터는 독립적인 바이트 레지스터로 사용할 수 있으며, 특정 명령어에 따라 BC, DE 및 HL(또는 인텔 문서에서 언급된 B, D, H)이라는 세 개의 16비트 레지스터 쌍으로 사용할 수 있다.

일부 명령어는 HL을 (제한된) 16비트 누산기로 사용한다. 8080과 마찬가지로 HL이 가리키는 메모리 주소의 내용을 가상 레지스터 M으로 접근할 수 있다. 또한 16비트 프로그램 카운터와 메모리로의 16비트 스택 포인터가 있어(8008의 내부 스택을 대체) PUSH PSW, POP PSW와 같은 명령어는 프로그램 상태 워드(누산기 및 플래그)에 영향을 미친다. 누산기는 산술 및 논리 연산의 결과를 저장하며, 플래그 레지스터 비트(부호, 제로, 보조 캐리, 패리티 및 캐리 플래그)는 이러한 연산의 결과에 따라 설정되거나 해제된다. 부호 플래그는 결과가 음수 부호를 가지면 설정된다(즉, 누산기의 비트 7이 설정되면 설정된다). 보조 또는 하프 캐리 플래그는 비트 3에서 비트 4로 캐리오버가 발생하면 설정된다. 패리티 플래그는 누산기의 패리티(1비트의 수)가 짝수이면 1로 설정되고, 홀수이면 해제된다. 제로 플래그는 연산 결과가 0이면 설정된다. 마지막으로 캐리 플래그는 누산기의 비트 7(MSB)에서 캐리오버가 발생하면 설정된다.

명령어/명령어
다른 많은 8비트 프로세서와 마찬가지로 모든 명령어는 단일 바이트로 인코딩된다(레지스터 번호 포함, 즉시 데이터 제외). 일부 명령어는 즉시 피연산자, 메모리 주소 또는 포트 번호일 수 있는 1바이트 또는 2바이트의 데이터가 뒤따른다. NOP "no operation" 명령어는 존재하지만, 레지스터나 플래그를 수정하지 않는다. 더 큰 프로세서와 마찬가지로 다중 레벨 프로시저 호출 및 반환을 위한 CALL 및 RET 명령어가 있으며(점프와 같이 조건부로 실행될 수 있음), 기계 스택에서 16비트 레지스터 쌍을 저장하고 복원하는 명령어가 있다. 또한 고정 주소 00h, 08h, 10h,...,38h에 위치한 서브루틴을 위한 8개의 1바이트 호출 명령어(RST)가 있다. 이는 외부 하드웨어에 의해 제공되어 해당 인터럽트 서비스 루틴을 호출하기 위한 것이지만, 종종 빠른 시스템 호출로 사용된다. 하나의 정교한 명령어는 XTHL로, 스택 포인터가 가리키는 주소에 저장된 값과 HL 레지스터 쌍을 교환하는 데 사용된다.

8비트 명령어
모든 2-피연산자 8비트 산술 및 논리(ALU) 연산은 8비트 누산기(A 레지스터)에서 작동한다. 2-피연산자 8비트 연산의 경우 다른 피연산자는 즉시 값, 다른 8비트 레지스터 또는 16비트 레지스터 쌍 HL이 주소하는 메모리 셀이 될 수 있다. 누산기 외의 목적지를 가질 수 있는 유일한 8비트 ALU 연산은 단항 증가 또는 감소 명령어로, 이는 2-피연산자 8비트 연산과 마찬가지로 HL이 주소하는 메모리 셀에서 작동할 수 있다. MOV 명령어를 사용하여 8비트 레지스터 간 또는 HL이 주소하는 메모리 셀과 8비트 레지스터 간의 직접 복사가 지원된다. 즉시 값도 앞서 언급한 목적지로 이동할 수 있으며, MVI 명령어를 사용한다. MOV 명령어의 규칙적인 인코딩 덕분에(전체 명령어 공간의 거의 4분의 1을 사용) 레지스터를 자체로 복사하는 중복 코드가 있다(예: MOV B,B). 이는 지연을 제외하고는 거의 쓸모가 없다. 그러나 HL이 주소하는 셀에서 자체로 복사하는 것은 HLT 명령어를 인코딩하여 외부 리셋 또는 마스크되지 않은 인터럽트가 발생할 때까지 실행을 중지한다.

16비트 연산
8085는 8비트 프로세서이지만 일부 16비트 연산을 수행한다. 세 개의 16비트 레지스터 쌍(BC, DE, HL) 또는 SP 중 하나는 즉시 16비트 값으로 로드(LXI 사용), 증가(INX 사용) 또는 감소(DCX 사용)하거나 HL에 추가(DAD 사용)할 수 있다. LHLD는 HL을 직접 주소 지정된 메모리에서 로드하고 SHLD는 HL을 마찬가지로 저장한다. XCHG 연산은 HL과 DE의 값을 교환한다. XTHL은 스택에 푸시된 마지막 항목을 HL과 교환한다. HL을 자체로 추가하면 하나의 명령어로 16비트 산술 왼쪽 시프트가 수행된다. 플래그에 영향을 미치는 유일한 16비트 명령어는 DAD(BC, DE, HL 또는 SP를 HL에 추가)로, 24비트 이상의 덧셈 및 왼쪽 시프트를 용이하게 하기 위해 캐리 플래그를 업데이트한다. 스택 포인터를 HL에 추가하는 것은 (재귀) 스택 프레임에서 변수를 인덱싱하는 데 유용하다. 스택 프레임은 DAD SP 및 SPHL을 사용하여 할당할 수 있으며, 계산된 포인터로 분기할 수 있다. 이러한 기능은 PL/M, Pascal 또는 C와 같은 언어를 16비트 변수로 컴파일하고 8085 기계 코드를 생성하는 것을 가능하게 한다. 16비트의 뺄셈 및 비트 논리 연산은 8비트 단계로 수행된다. 프로그램 코드(서브루틴 라이브러리)로 구현해야 하는 연산에는 부호 있는 정수의 비교뿐만 아니라 곱셈 및 나눗셈이 포함된다.

문서화되지 않은 명령어
두 명의 소프트웨어 엔지니어인 Wolfgang Dehnhardt와 Villy M. Sorensen이 8085 어셈블러를 개발하는 과정에서 여러 문서화되지 않은 명령어와 플래그가 발견되었다. 이러한 명령어는 16비트 피연산자를 사용하며, 간접 로딩 및 저장, 뺄셈, 시프트, 회전 및 오프셋 연산을 포함한다. 8085가 설계되었지만 아직 발표되지 않았을 때, 많은 설계자들은 이미 시장에 나와 있는 경쟁 제품보다 열등하다고 생각했다. 차세대 8086 CPU가 이미 개발 중이었다. 인텔은 다가오는 8086 CPU의 설계를 가속화하고 단순화하기 위해 12개의 새로운 8085 명령어 중 10개를 문서화하지 않기로 마지막 순간에 결정했다.

입출력 체계
8085는 포트 매핑 및 메모리 매핑 I/O를 모두 지원한다. 이는 전용 입출력 명령어를 통해 최대 256개의 입출력(I/O) 포트를 지원하며, 포트 주소를 피연산자로 사용한다. 포트 매핑 I/O는 주소 공간이 제한된 프로세서에서 이점이 될 수 있다. 포트 매핑 I/O 버스 사이클 동안, 8비트 I/O 주소는 16비트 주소 버스의 하위 및 상위 절반 모두에서 CPU에 의해 출력된다. 메모리 매핑 I/O용으로 설계된 장치는 LDA(16비트 주소에서 누산기로 로드) 및 STA(지정된 16비트 주소에 누산기 저장) 명령어 또는 메모리 피연산자가 있는 다른 명령어를 사용하여 접근할 수 있다. 메모리 매핑 I/O 전송 사이클은 버스에서 정상적인 메모리 액세스 사이클로 나타난다.

개발 시스템
주요 기사: 인텔 시스템 개발 키트
인텔은 8080 및 8085용 개발 시스템 시리즈를 생산했으며, 이를 MDS-80 마이크로프로세서 시스템이라고 한다. 원래 개발 시스템에는 8080 프로세서가 있었다. 나중에 8085 및 8086 지원이 추가되었으며, ICE(회로 내 에뮬레이터)도 포함되었다. 이는 CPU, 모니터 및 단일 8인치 플로피 디스크 드라이브를 포함하는 약 20인치 큐브 크기의 큰 데스크탑 상자이다(인텔의 기업 블루 색상). 나중에 두 개의 추가 플로피 드라이브가 있는 외부 상자가 제공되었다. 이는 ISIS 운영 체제를 실행하며, 에뮬레이터 포드 및 외부 EPROM 프로그래머도 작동할 수 있다. 이 장치는 원래 개발 시스템을 위해 의도된 멀티버스 카드 케이지를 사용한다. 놀라운 수의 여분의 카드 케이지와 프로세서가 판매되었으며, 이는 멀티버스가 별도의 제품으로 개발되는 계기가 되었다.

나중에 iPDS는 약 8" × 16" × 20" 크기의 휴대용 장치로, 손잡이가 있다. 이는 작은 녹색 화면, 상단에 내장된 키보드, 5¼ 인치 플로피 디스크 드라이브를 가지고 있으며, ISIS-II 운영 체제를 실행한다. 두 번째 8085 프로세서를 수용할 수 있어 두 프로세서가 동시에 독립적으로 실행되는 제한된 형태의 다중 프로세서 작동이 가능하다. 화면과 키보드는 두 프로세서 간에 전환할 수 있어 한 프로세서에서 프로그램을 어셈블하는 동안(큰 프로그램은 시간이 걸림) 다른 프로세서에서 파일을 편집할 수 있다. 버블 메모리 옵션과 다양한 프로그래밍 모듈이 있으며, EPROM, 인텔 8048 및 8051 프로그래밍 모듈이 측면에 플러그인되어 독립형 장치 프로그래머를 대체한다. 8080/8085 어셈블러 외에도 인텔은 PL/M-80 및 Pascal용 컴파일러와 임베디드 시스템에서 -80 및 Pascal용 컴파일러와 임베디드 시스템에서 사용하기 위해 프로그램을 정적으로 연결하고 위치를 지정하는 도구 세트를 생산했다. 저비용 "MCS-85 시스템 디자인 키트"(SDK-85) 보드는 8085 CPU, 디버깅 모니터 프로그램이 포함된 8355 ROM, 8155 RAM 및 22개의 I/O 포트, 8279 헥스 키패드 및 8자리 7세그먼트 LED, 그리고 TTY(텔레타이프) 20mA 전류 루프 직렬 인터페이스를 포함한다. 추가로 2K×8 8755 EPROM 및 256바이트 RAM 8155 I/O 타이머/카운터를 추가할 수 있는 패드가 제공된다. 모든 데이터, 제어 및 주소 신호는 듀얼 핀 헤더에 제공되며, 넓은 프로토타이핑 영역이 제공된다.


 

 

The Intel 8085 ("eighty-eighty-five") is an 8-bit microprocessor released by Intel in March 1976. It is the last 8-bit microprocessor developed by Intel. It is software binary compatible with the more famous Intel 8080, with two minor instructions added to support additional interrupt and serial I/O functions. However, it requires fewer support circuits, allowing for simpler and cheaper microcomputer systems. The "5" in the part number emphasizes that the 8085 uses a single +5-volt power supply, matching the competing Z80, and does not require the +5V, -5V, and +12V power supplies needed by the 8080. These processors can be used in computers running the CP/M operating system. The 8085 is available in a 40-pin DIP package. To maximize the functionality of the available pins, the 8085 uses a multiplexed address/data (AD0-AD7) bus. However, the 8085 circuit requires an 8-bit address latch, so Intel manufactured several support chips with built-in address latches. These include the 8755 with an address latch, 2KB of EPROM, and 16 I/O pins, and the 8155 with 256 bytes of RAM, 22 I/O pins, and a 14-bit programmable timer/counter. The multiplexed address/data bus reduced the number of PCB tracks between the 8085 and these memory and I/O chips. Both the 8080 and 8085 were overshadowed by the Zilog Z80 for desktop computers, which took a significant portion of the CP/M computer market and the rapidly growing home computer market in the early to mid-1980s. The 8085 had a long life as a controller thanks to its built-in serial I/O and five priority interrupts, which provided microcontroller-like functionality that the Z80 CPU did not have. After being designed into products like the DECtape II controller and VT102 video terminal in the late 1970s, the 8085 was used in new production throughout the life of these products, which generally lasted longer than the product life of desktop computers.

The 8085 is a traditional von Neumann design based on the Intel 8080. Unlike the 8080, it does not multiplex state signals on the data bus, but the 8-bit data bus is multiplexed with the lower 8 bits of the 16-bit address bus to limit the pin count to 40. State signals are provided by dedicated bus control signal pins and two dedicated bus state ID pins called S0 and S1. Pin 40 is used for power supply (+5V), and pin 20 is used for ground. Pin 39 is used as the HOLD pin. The processor is designed using nMOS circuits, and the later "H" version is implemented with Intel's high-performance MOS process, HMOS II ("High-Performance MOS"). It requires only a single 5-volt power supply, similar to competing processors and unlike the 8080. The 8085 uses about 6,500 transistors. The 8085 integrates the functions of the 8224 (clock generator) and 8228 (system controller) chips, increasing the level of integration. Compared to similar contemporary designs like the Z80, a disadvantage is the need to demultiplex the bus. However, the address latches of the Intel 8155, 8355, and 8755 memory chips allow direct interfacing, making the 8085 and these chips form an almost complete system. The 8085 is extended to support new interrupts, including three maskable vector interrupts (RST 7.5, RST 6.5, and RST 5.5), one non-maskable interrupt (TRAP), and one external service interrupt (INTR). Each of these five interrupts has a separate pin on the processor, avoiding the cost of a separate interrupt controller. The RST 7.5 interrupt is edge-triggered (latched), while RST 5.5 and 6.5 are level-sensitive. All interrupts except TRAP are enabled by the EI instruction and disabled by the DI instruction. Additionally, the SIM (Set Interrupt Mask) and RIM (Read Interrupt Mask) instructions, which are not derived from the 8080 design, allow the three maskable RST interrupts to be individually masked. After a normal CPU reset, all three interrupts are masked. SIM and RIM also read the global interrupt mask state and the individual RST interrupt mask states, read the pending interrupt state of the same three interrupts, reset the RST 7.5 trigger latch flip-flop (canceling pending interrupts without servicing), and allow serial data transmission and reception through the SOD and SID pins. This is done independently under program control. SIM and RIM execute in four clock cycles (T states) each, making it much faster to sample SID or toggle SOD than to toggle or sample signals through I/O or memory-mapped ports. (In this way, SID is comparable to the SO ["Set Overflow"] pin of the contemporary 6502 CPU.)

Like the 8080, the 8085 can accommodate slow memory through externally generated wait states (pin 35, READY) and provides direct memory access (DMA) using the HOLD and HLDA signals (pins 39 and 38). An improvement over the 8080 is that the 8085 can directly drive a piezoelectric crystal, and the built-in clock generator produces an internal high-amplitude two-phase clock signal at half the crystal frequency (e.g., a 6.14 MHz crystal generates a 3.07 MHz clock). The internal clock is available at an output pin, allowing peripherals or other CPUs to be driven in synchronization with the CPU. The 8085 can also be clocked by an external oscillator, allowing the 8085 to be used in synchronous multiprocessor systems with a common system clock or synchronized to an external time reference such as a video source or high-precision time reference. The 8085 is a binary-compatible successor to the 8080. It supports the entire instruction set of the 8080, with identical instruction operations and all effects on CPU flags (except for the AC flag setting in AND/ANI operations). This means that most object code (program images in ROM or RAM) that runs successfully on the 8080 can run directly on the 8085 without translation or modification. (Exceptions include timing-sensitive code and code sensitive to differences in AC flag setting or undocumented CPU behavior.) 8085 instruction timing is slightly different from the 8080. Some 8-bit operations (including INR, DCR, and the frequently used MOV r,r' instructions) are one clock cycle faster, but instructions involving 16-bit operations (including stack operations) are generally one cycle slower. Of course, actual 8080 and/or 8085 processors may differ from published specifications, especially in subtle details. (This is not the case for the Z80.) As already mentioned, only the SIM and RIM instructions are newly added to the 8085.

The processor has seven 8-bit registers accessible to the programmer, named A, B, C, D, E, H, and L, with A also known as the accumulator. The remaining six registers can be used as independent byte registers or, depending on the instruction, as three 16-bit register pairs named BC, DE, and HL (or B, D, H as referred to in Intel documentation). Some instructions use HL as a (limited) 16-bit accumulator. Like the 8080, the contents of the memory address pointed to by HL can be accessed as a virtual register M. Additionally, there is a 16-bit program counter and a 16-bit stack pointer to memory (replacing the internal stack of the 8008), and instructions like PUSH PSW and POP PSW affect the program status word (accumulator and flags). The accumulator stores the results of arithmetic and logical operations, and the flag register bits (sign, zero, auxiliary carry, parity, and carry flags) are set or cleared based on the results of these operations. The sign flag is set if the result has a negative sign (i.e., if bit 7 of the accumulator is set). The auxiliary or half-carry flag is set if there is a carryover from bit 3 to bit 4. The parity flag is set to 1 if the parity (number of 1 bits) of the accumulator is even and cleared if it is odd. The zero flag is set if the result of an operation is 0. Finally, the carry flag is set if there is a carryover from bit 7 (MSB) of the accumulator.

Instruction/Instruction
Like many other 8-bit processors, all instructions are encoded in a single byte (including register numbers, excluding immediate data). Some instructions are followed by 1-byte or 2byte data, which can be an immediate operand, memory address, or port number. The NOP "no operation" instruction exists but does not modify registers or flags. Like larger processors, there are CALL and RET instructions for multi-level procedure calls and returns (which can be executed conditionally like jumps), and instructions to save and restore 16-bit register pairs on the machine stack. There are also eight 1-byte call instructions (RST) for subroutines located at fixed addresses 00h, 08h, 10h,...,38h. These are intended to be provided by external hardware to call the corresponding interrupt service routine but are often used for fast system calls. One sophisticated instruction is XTHL, which exchanges the value stored at the address pointed to by the stack pointer with the HL register pair.

8-bit Instructions
All 2-operand 8-bit arithmetic and logical (ALU) operations operate on the 8-bit accumulator (A register). For 2-operand 8-bit operations, the other operand can be an immediate value, another 8bit register, or a memory cell addressed by the 16-bit register pair HL. The only 8-bit ALU operations that can have a destination other than the accumulator are the unary increment or decrement instructions, which can operate on the memory cell addressed by HL, just like the 2operand 8-bit operations. The MOV instruction supports direct copying between 8-bit registers or between an 8-bit register and the memory cell addressed by HL. Immediate values can also be moved to the aforementioned destinations using the MVI instruction. Due to the regular encoding of the MOV instruction (using almost a quarter of the entire instruction space), there is redundant code for copying a register to itself (e.g., MOV B,B). This is almost useless except for delays. However, copying the cell addressed by HL to itself encodes the HLT instruction, which halts execution until an external reset or a non-maskable interrupt occurs.

16-bit Operations
Although the 8085 is an 8-bit processor, it performs some 16-bit operations. One of the three 16bit register pairs (BC, DE, HL) or SP can be loaded with an immediate 16-bit value (using LXI), incremented (using INX), or decremented (using DCX), or added to HL (using DAD). LHLD loads HL from directly addressed memory, and SHLD stores HL similarly. The XCHG operation exchanges the values of HL and DE. XTHL exchanges the last item pushed onto the stack with HL. Adding HL to itself performs a 16-bit arithmetic left shift in one instruction. The only 16-bit instruction that affects flags is DAD (adding BC, DE, HL, or SP to HL), which updates the carry flag to facilitate addition and left shifts of more than 24 bits. Adding the stack pointer to HL is useful for indexing variables in (recursive) stack frames. Stack frames can be allocated using DAD SP and SPHL, and branches can be made to computed pointers. These features make it possible to compile languages like PL/M, Pascal, or C with 16-bit variables and generate 8085 machine code. 16-bit subtraction and bitwise logical operations are performed in 8-bit steps. Operations that must be implemented in program code (subroutine libraries) include signed integer comparison as well as multiplication and division.

Undocumented Instructions
Two software engineers, Wolfgang Dehnhardt and Villy M. Sorensen, discovered several undocumented instructions and flags while developing an 8085 assembler. These instructions use 16bit operands and include indirect loading and storing, subtraction, shifts, rotations, and offset operations. When the 8085 was designed but not yet announced, many designers already considered it inferior to competing products on the market. The next-generation 8086 CPU was already under development. Intel decided at the last moment not to document 10 of the 12 new 8085 instructions to accelerate and simplify the design of the upcoming 8086 CPU.

I/O System
The 8085 supports both port-mapped and memorymapped I/O. It supports up to 256 I/O ports through dedicated I/O instructions, using the port address as an operand. Port-mapped I/O can be an advantage in processors with limited address space. During a port-mapped I/O bus cycle, the 8-bit I/O address is output by the CPU on both the lower and upper halves of the 16-bit address bus. Devices designed for memory-mapped I/O can be accessed using LDA (load accumulator from 16-bit address) and STA (store accumulator to specified 16-bit address) instructions or other instructions with memory operands. Memory-mapped I/O transfer cycles appear on the bus as normal memory access cycles.

Development Systems
Main article: Intel System Development Kit
Intel produced a series of development systems for the 8080 and 8085, called the MDS80 Microprocessor System. The original development system had an 8080 processor. Later, 8085 and 8086 support was added, including ICE (in-circuit emulators). It is a large desktop box about the size of a 20-inch cube, containing a CPU, monitor, and a single 8-inch floppy disk drive (in Intel's corporate blue color). Later, an external box with two additional floppy drives was available. It runs the ISIS operating system and can operate emulator pods and external EPROM programmers. This device uses the Multibus card cage intended for the original development system. A surprising number of extra card cages and processors were sold, leading to the development of Multibus as a separate product.

Later, the iPDS was a portable device about 8" × 16" × 20" in size, with a handle. It has a small green screen, a built-in keyboard on top, and a 5¼-inch floppy disk drive, running the ISIS II operating system. It can accommodate a second 8085 processor, allowing limited forms of multiprocessor operation with both processors running independently at the same time. The screen and keyboard can be switched between the two processors, allowing one processor to assemble a program (which takes time for large programs) while the other processor edits files. There are bubble memory options and various programming modules, with EPROM, Intel 8048, and 8051 programming modules plugging into the side, replacing standalone device programmers. In addition to the 8080/8085 assembler, Intel produced compilers for PL/M-80 and Pascal, and a toolset for statically linking and locating programs for use in embedded systems. The low-cost "MCS-85 System Design Kit" (SDK-85) board includes an 8085 CPU, an 8355 ROM with a debugging monitor program, an 8155 RAM with 22 I/O ports, an 8279 hex keypad, and an 8-digit 7-segment LED, and a TTY (teletype) 20mA current loop serial interface. Pads are provided for adding an additional 2K×8 8755 EPROM and 256-byte RAM 8155 I/O timer/counter. All data, control, and address signals are provided on dual pin headers, with a large prototyping area provided.

반응형

'Computer > CPU' 카테고리의 다른 글

Intel MCS-51 [Intel / 1980]  (0) 2024.09.23
Intel MCS-48 [Intel / 1976]  (0) 2024.09.22
INTEL 8080 [INTEL / 1974]  (0) 2024.09.20
INTEL 8008 [INTEL / 1972]  (0) 2024.09.19
INTEL 4040 [INTEL / 1974]  (0) 2024.09.18