728x90
반응형
1. Memory interface하기
시험에 나올 것 같음.
2. 명령어
-> 크기별로 1, 2, 3byte 명령어가 존재
-> 기능별로 산술 연산, 논리 연산, 데이터 전송 연산이 존재
<1byte 명령어>
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 | 1byte 명령어 | opcode fetch | A data + r data를 A에 저장해 |
ADD M | 1byte 명령어 | opcode fetch + MEMR | A data + M data를 A에 저장해 |
ADC r | 1byte 명령어 | opcode fetch | A data + CY + r data를 A에 저장해 |
ADC M | 1byte 명령어 | opcode fetch + MEMR | A data + CY + M data를 A에 저장해 |
SUB r | 1byte 명령어 | opcode fetch | A data - r data를 A에 저장해 |
SUB M | 1byte 명령어 | opcode fetch + MEMR | A data - M data를 A에 저장해 |
SBB r | 1byte 명령어 | opcode fetch | A data - r data - borrow를 A에 저장해 |
SBB M | 1byte 명령어 | opcode fetch + MEMR | A data - M data - borrow를 A에 저장해 |
INR r | 1byte 명령어 | opcode fetch | r data + 1을 r에 저장해 |
INR M | 1byte 명령어 | o.f + MEMR + MEMW | M data + 1을 M주소에 저장해 |
DCR r | 1byte 명령어 | opcode fetch | r data - 1을 r에 저장해 |
DCR M | 1byte 명령어 | o.f + MEMR + MEMW | M data - 1을 M주소에 저장해 |
INX rp | 1byte 명령어 | opcode fetch | rp data + 1을 rp에 저장해 |
DCX rp | 1byte 명령어 | opcode fetch | rp data - 1을 rp에 저장해 |
ANA r | 1byte 명령어 | opcode fetch | A data와 r data를 bit AND 연산 후 A에 저장해 |
ANA M | 1byte 명령어 | opcode fetch + MEMR | A data와 M data를 bit AND 연산 후 A에 저장해 |
ORA r | 1byte 명령어 | opcode fetch | A data과 r data를 bit OR 연산 후 A에 저장해 |
ORA M | 1byte 명령어 | opcode fetch + MEMR | A data와 M data를 bit OR 연산 후 A에 저장해 |
XRA r | 1byte 명령어 | opcode fetch | A data와 r data를 bit XOR 연산 후 A에 저장해 |
XRA M | 1byte 명령어 | opcode fetch + MEMR | A data와 M data를 bit XOR 연산 후 A에 저장해 |
CMP r | 1byte 명령어 | opcode fetch | A data와 r data를 뺄셈하며 크기를 비교해 |
CMP M | 1byte 명령어 | opcode fetch + MEMR | A data와 M data의 크기 비교 |
PUSH rp | 1byte 명령어 | o.f + MEMW + MEMW | [SP - 1] 주소에 rp data 하나, [SP - 2] 주소에 rp data 하나 push해, 뺄셈은 자동이야 |
POP rp | 1byte 명령어 | o.f + MEMR + MEMR | [SP] 주소의 data를 rp로, [SP + 1] 주소의 data를 rp로 pop해, 덧셈은 자동이야 |
RET | 1byte 명령어 | o.f + MEMR + MEMR | CALL 실행 후 실행 전 주소의 다음 주소로 돌아가 |
<2byte 명령어>
MVI r, data | 2byte 명령어 | o.f + MEMR | data를 r에 복사해 |
IN #port | 2byte 명령어 | o.f +MEMR + IOR | #port의 data를 A에 복사해 |
OUT #port | 2byte 명령어 | o.f + MEMR + IOW | A의 data를 #port로 내보내 |
ADI data | 2byte 명령어 | o.f + MEMR | A data + data를 A에 저장해 |
ACI data | 2byte 명령어 | o.f + MEMR | A data + CY + data를 A에 저장해 |
SUI data | 2byte 명령어 | o.f + MEMR | A data - data를 A에 저장해 |
SBI data | 2byte 명령어 | o.f + MEMR | A data - data - borrow를 A에 저장해 |
ANI data | 2byte 명령어 | o.f + MEMR | A data와 data를 bit AND 연산 후 A에 저장해 |
ORI data | 2byte 명령어 | o.f + MEMR | A data와 data를 bit OR 연산 후 A에 저장해 |
XRI data | 2byte 명령어 | o.f + MEMR | A data와 data를 bit XOR 연산 후 A에 저장해 |
CPI data | 2byte 명령어 | o.f + MEMR | A data와 data 간 크기 비교 |
<3byte 명령어>
LDA xxxxH | 3byte 명령어 | o.f + MEMR + MEMR + MEMR | xxxxH의 data를 A에 복사해 |
LXI rp, xxxxH | 3byte 명령어 | o.f + MEMR + MEMR | xxxxH를 쪼개서 rp에 복사해 |
STA xxxxH | 3byte 명령어 | o.f + MEMR + MEMR + MEMW | A의 data를 xxxxH에 복사해 |
JMP xxxxH | 3byte 명령어 | o.f + MEMR + MEMR | xxxxH로 jump해서 명령 수행 |
CALL xxxxH | 3byte 명령어 | o.f + MEMR + MEMR + MEMW + MEMW |
** INX B, INR B, INR M 차이 !!
** INX에서는 B, D, H, SP 모두 가능 !!
** CMP와 같은 비교연산들은 A or reg의 값들이 변하지 않음 !! 내부 Flag의 CY, Z 값만 변함 !!
** 명령어에 X가 들어가 있으면 rp 관련 명령어 !!
** 명령어에 I가 들어가 있으면 대부분 data 관련 명령어 !!
3. 타이밍도
MOV와 관련된 타이밍도가 시험에 나왔음.
23년 중간고사, 기말고사 족보를 원하신다면 댓글로 남겨주세요 !
(시험 끝나고 제가 직접 기록한 족보입니다)
728x90
반응형
'KNU_study > 마이크로프로세서' 카테고리의 다른 글
마이크로프로세서(17) Stack과 Subroutine (0) | 2023.04.21 |
---|---|
마이크로프로세서(16) 프로그램 코드 설계 예제 (0) | 2023.04.21 |
마이크로프로세서(15) I/O interface (1) | 2023.04.21 |
마이크로프로세서(14) 타이밍도 (1) | 2023.04.21 |
마이크로프로세서(13) 어셈블러 명령어2 (0) | 2023.04.21 |