본문 바로가기

728x90
반응형

KNU_study/마이크로프로세서

마이크로프로세서 암기노트(중간고사) 1. Memory interface하기 시험에 나올 것 같음. 2. 명령어 -> 크기별로 1, 2, 3byte 명령어가 존재 -> 기능별로 산술 연산, 논리 연산, 데이터 전송 연산이 존재 MOV r1, r2 1byte 명령어 opcode fetch r2 data를 r1에 복사해 MOV r, M 1byte 명령어 opcode fetch + MEMR M 주소인 data를 A에 복사 MOV M, r 1byte 명령어 opcode fetch + MEMW A의 data를 M 주소에 복사해 LDAX rp 1byte 명령어 opcode fetch + MEMR rp 주소인 data를 A에 복사해 STAX rp 1byte 명령어 opcode fetch + MEMW A의 data를 rp 주소에 복사해 ADD r 1byt.. 더보기
마이크로프로세서(17) Stack과 Subroutine 1. Stack Stack : 메모리의 일부분, 프로그램 실행 중에 저장해야 하는 것을 잠시 저장해두는 공간이다. -> SP : Stack 번지의 첫주소 SP를 사용하는 명령어는 LXI가 유일하다. 프로그램을 짤 때마다 Stack의 양을 계산하는 것은 쉽지 않다. -> 그 대신, 메모리의 맨 끝 번지에 저장해두자. 저절로 감소하면서 저장될 것이다. (PC는 1씩 증가하면서 저장되듯이, SP는 2씩 감소하면서 저장된다는 느낌으로 ~~) 사실 3009H 말고, 실수로 로 작성해도 오류가 나지 않는다. 아래 알고리즘 참고 Stack : [300AH에 저장] -> [1 감소] -> [3009H에 저장] -> [1 감소] Stack : [1 감소] -> [3009H에 저장] -> [1 감소] -> [3008H에 .. 더보기
마이크로프로세서(16) 프로그램 코드 설계 예제 1. 50H - 40H 문제 : 2052H 주소에 data 50H가, 2051H 주소에 data 40H이 저장되어 있다. 50H - 40H의 값을 2053H 주소에 저장해라. -> 뺄셈은 무조건 A(accumulator)에서 실행 가능하다. -> 40H를 먼저 A로 가져와 B로 옮겨두고, 50H를 A로 가져온다. 그런 후 A에서 B를 빼면 결과가 나온다. LDA 2052H MOV B, A LDA 2051H SUB B STA 2053H 만약 이 코드를 읽고, address bus를 채워 넣으라 하면 다음과 같다. 2. 옛날 호텔 제어 system -> IN 00H : input 포트로부터 00H를 받아서 무조건 A에 저장하라는 명령어. -> 그걸 그대로 output 포트로 내보내면 된다. IN 00H OU.. 더보기
마이크로프로세서(15) I/O interface Memory interface에 대한 내용이 궁금하다면 여기를 클릭 !! 1. Review : Memory interface 메모리는 D flipflop를 사용한다. 참고로 이번 챕터에서 공부할 I/O는 latch 혹은 버퍼를 사용한다. 2. I/O interface 공간이 모자랄 수 있기 때문에 address bus와 control bus를 결합해서 enable신호를 준다. -> 둘 다 1일 때만 신호를 흐르게 한다. 3. INPUT 포트와 OUTPUT 포트 active low로 동작한다. 인풋 포트 00H를 enable시키면 다음 그림과 같다. 그 아래 그림은 비용 절감이라는 장점이 있는 버전이다. 오류 ㅎㅎ ㅠㅠ : input 포트는 NAND 게이트로 연결되어야 함 오류 ㅎㅎ ㅠㅠ : input 포.. 더보기
마이크로프로세서(14) 타이밍도 1. demultiplexing Read 할 때의 순서 : Address bus --> Control bus --> Data bus Write 할 때의 순서 : Address bus --> Data bus --> Control bus -> Address bus와 Data bus는 동시에 쓰이지 않는다. 그러므로 그걸 같이 써서 효율적으로 줄이자. 이렇게 공용으로 사용하는 것을 demultiplexing이라고 한다. 입력이 1개, 출력이 여러개인 상황을 의미한다. multiplexer는 입력이 여러 개, 출력이 한 개 2. ALE 신호 (1) Ctrl 신호(파랑)을 1로 준다. (2) 잠시 뒤, Ctrl 신호(파랑)을 0으로 바꾼다. (3) 결과를 보면, Q는 그대로 1이 유지되고, 그 밑의 값은 변한다... 더보기
마이크로프로세서(13) 어셈블러 명령어2 어셈블러 명령어1 을 읽고 싶다면 여기를 클릭 ! 1. ADD r 1byte 명령어, opcode fetch read machine cycle r과 A를 더한 값을 A에 저장해라. -> ADD A 명령은 A + A의 결과값을 A에 저장하라는 의미이다. 2. ADI 8bits 2 byte 명령어, opcode fetch read + MEMR machine cycle 8bits(데이터)와 A를 더한 값을 A에 저장해라. +) ADD M 1byte 명령어, opcode fetch read + MEMR machine cycle M(16bits, 해당 주소)의 data와 A를 더한 값을 A에 저장해라. 3. ADC r 1byte 명령어, opcode fetch read machine cycle carry, r, .. 더보기
마이크로프로세서(12) 어셈블러 명령어 instruction cycle과 machine cycle의 차이점이 궁금하다면 여기를 클릭 어셈블러 명령어의 간단한 요약이 궁금하다면 여기를 클릭 ** r : 내부 register ** rp : register pair, 내부 register의 쌍 1. MOV r1, r2 1byte 명령어, opcode fetch read machine cycle 내부의 register끼리 서로 값을 바꿔라. -> r2를 r1으로 copy해라 (r2 : source, r1 : destination) 2. MVI r, 8bits 2byte 명령어, opcode fetch read + MEMR machine cycle 8bits(데이터)의 값을 r에 넣어라. 3. IN #port 2byte 명령어, opcode fetch.. 더보기
마이크로프로세서(11) I/O interface 3개의 control 신호 control 신호는 크게 4가지가 있다. -> memread, memwrite, IOread, IOwrite. -> 각각 memory를 읽고 쓰기, I/O를 읽고 쓰는 역할을 한다. 그러나 실제로 control 신호는 3가지로 구성된다. 이 3개의 신호들을 메모리에 적용하면 다음과 같은 그림이 나온다. -> 그냥 남는 곳에다가 IO/M[바] 신호를 0으로 연결하자. -> IO/M[바] : 값이 0이면 low 신호이므로 memory, 1이면 high 신호이므로 IO를 선택한다.) I/O interface I/O를 interface시키는 방법은 크게 두 가지가 있다. 1. I/O mapped I/O -> I/O를 I/O 자체에 매핑시킨다. -> 동시에 control 신호가 안 나.. 더보기

728x90
반응형