C 마이크로프로세서 프로그래밍/마이크로프로세서: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
Dolicom (토론 | 기여)
잔글편집 요약 없음
Dolicom (토론 | 기여)
2번째 줄:
 
마이크로프로세서가 처리하는 데이터는 메모리와 레지스터간의 데이터 전송과 ALU을 통한 논리계산을 행하므로써 실행된다.
 
== 마이크로프로세서 구성요소 ==
 
=== 레지스터 ===
* 일반 레지스터
* SP
* PC(IP)
 
* BP
 
'''특수레지스터'''
* FLAG
* Interrupt Mask
 
* 권한 레벨
 
 
== 마이크로프로세서 기본 기능 ==
줄 10 ⟶ 26:
* 프로그램 실행 제어를 위한 점프
* 기타 프로세서 제어 : 인터럽트, 실행 권한
 
CPU 마다 어셈블리 표현 방식은 다르나 일반적인 개념을 위해 다음과 같이 표시 한다. 따라서 정해진 CPU 없이 가상의 명령어 이다. 그리고 어떤 종류의 명령어는 CPU 마다 존재하지 않는 경우가 있다.
 
=== 데이터 전송 명령어 ===
 
: MOV R0,00301000h
 
: MOV R0,R1
: MOV R0,SP
 
'''스택명령'''
: PUSH R0
: PUSH 1000h
 
: POP R0
 
=== ALU을 통한 연산 명령어 ===
 
'''사칙연산'''
: ADD R0,R1
: SUB R0,R1
: MUL R0,R2
: DIV R0,R2
 
: CMP R0,01234H
: INC R0
: DEC R0
 
'''논리연산'''
: AND R0,R1
: OR R0,R1
: XOR R0,R1
 
'''쉬프트 연산'''
: RR R0,1
: LR R0,1
 
=== 흐름제어 명령어 ===
 
점프 명령어는 프로그램의 실행 코드 위치를 변경하는 명령이다. PC 레지스터의 값을 변경함으로써 실행 코드위치가 결정된다.
 
'''절대 주소로 점프'''
: JUMP 200000H
: PC <= 200000H
 
'''상대 주소로 점프'''
: JREL $20H
: PC <= PC+상대 거리 주소값 (OFFSET), PC <= PC+ 20H
 
'''조건 점프 명령'''
 
: JEQ NextLable1
여기서 EQ는 CPU의 FLAG 레지스터 값에 의해 판단된다. 따라 이 명령이 실행되기 전에 ALU을 통한 연산이 이루어져 FLAG값이 설정되어 있어야 한다.
 
: CALL 3002000H
: RET
 
: IRET ; Interrupt Service Routine 종료
 
=== 기타 ===
 
: NOP ; 아무 동작을 하지 않는다. 패치(fetch)만 일어진다. 시간 끌기 등에 사용할수 있다.
 
: INT 12 ; 소프트웨어 인터럽트
 
: EI ; Interrupt Enable - 전체 인터럽트 처리를 수용한다.
: DI ; Interrupt Disable - 전체 인터럽트 처리를 하지 않는다.
 
: IDLE ; idle 모드로 전환
 
 
 
[[분류:마이크로프로세서]]