110 likes | 503 Views
8051 마이크로컨트롤러 제 3 장 . 명령어 집합. 데이터 이동 명령어 (Data transfer Instruction). MOV <dest-byte>, <src-byte> : 바이트 변수 이동
E N D
8051 마이크로컨트롤러 제3장. 명령어 집합 데이터 이동 명령어(Data transfer Instruction) • MOV <dest-byte>, <src-byte> : 바이트 변수 이동 - MOV A, Rn / MOV A, direct / MOV A, @Ri / MOV A, #data (A) (Rn) / (A) (direct) / (A) ((Ri)) / (A) #data - MOV Rn, A / MOV Rn, direct / MOV Rn, #data - MOV direct, A / MOV direct, Rn / MOV direct, direct / MOV direct, @Ri / MOV direct, #data - MOV @Ri, A / MOV @Ri, direct / MOV @Ri, #data • - MOV DPTR, #data16 -1-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 데이터 이동 명령어 • MOVC A, @A + <base-reg> : 상수 byte나 코드 byte 옮기기 - MOVC A, @A + DPTR : 1byte, 2cycle, (A) ((A) + (DPTR)) - MOVC A, @A + PC : 1byte, 2cycle, (A) ((A) + (PC)) • PUSH direct : 스택으로 자료를 넣음 - 2byte, 2cycle, (SP) (SP) + 1, ((SP)) (direct) • POP direct : 스택으로부터 자료를 꺼냄 - 2byte, 2cycle, (direct) ((SP)), (SP) (SP) - 1 -2-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 데이터 이동 명령어 • MOVX : 외부 RAM 내용과 누산기 내용을 이동 - MOVX A, @Ri : 1byte, 2cycle, (A) ((Ri)) - MOVX A, @DPTR : 1byte, 2cycle, (A) ((DPTR)) - MOVX @Ri, A : 1byte, 2cycle, ((Ri)) (A) - MOVX @DPTR, A : 1byte, 2cycle, ((DPTR)) (A) • XCH : 바이트 변수와 누산기의 내용을 교환 - XCH A, Rn : (A) (Rn) / XCH A, direct / XCH A, @Ri • XCHD : 하위 니블 내용을 교환 - XCHD A, @Ri : 1byte, 1cycle, (A3 ~ A0) ((Ri3 ~ Ri0)) -3-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 부울 명령어(Boolean Instruction) • CLR <bit> : 비트 지우기 - CLR C : (C) 0 / CLR bit : (bit) 0 • SETB <bit> : 비트 세트 - SETB C : (C) 1 / SETB bit : (bit) 1 • CPL <bit> : 비트 보수 - CPL C : (C) NOT (C) / CPL bit : (bit) NOT (bit) • ANL C, <src-bit> : 비트 변수 논리적 AND - ANL C, bit : (C) (C) AND (bit) - ANL C, /bit : (C) (C) AND NOT (bit) -4-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 부울 명령어(Boolean Instruction) • ORL C, <src-bit> : 비트 변수 논리적 OR - ORL C, bit : (C) (C) OR (bit) - ORL C, /bit : (C) (C) OR NOT (bit) • MOV <dest-bit>, <src-bit> : 비트 변수 옮기기 - MOV C, bit : (C) (bit) / MOV bit, C : (bit) (C) • JC rel : 캐리가 “1”이면 분기 - (PC) (PC) + 2, IF (C) = 1 THEN (PC) (PC) + rel • JNC rel : 캐리가 “1”이 아니면 분기 - (PC) (PC) + 2, IF (C) = 0 THEN (PC) (PC) + rel -5-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 부울 명령어(Boolean Instruction) • JB <bit>, rel : 비트가 “1”이면 분기 - (PC) (PC) + 3, IF (bit) = 1 THEN (PC) (PC) + rel • JNB <bit>, rel : 비트가 “1”이 아니면 분기 - (PC) (PC) + 3, IF (bit) = 0 THEN (PC) (PC) + rel • JBC <bit>, rel : 비트가 “1”이면 분기하고, 비트는 “0” - (PC) (PC) + 3, IF (bit) = 1 THEN (bit) 0, (PC) (PC) + rel -6-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 프로그램 분기 명령어(Program branching) • CALL : 호출 - ACALL addr11 : 2K byte 내, ((SP)) (PC) - LCALL addr16 : 64K byte, ((SP)) (PC) • JMP : 분기 - SJMP rel : -128 ~ +127byte 내, (PC) (PC) + rel - AJMP addr11 : 2K byte 내, (PC10 ~ PC0) page address - LJMP addr16 : 64K byte, (PC) addr15 ~ addr0 - JMP @A + DPTR : 64K byte, (PC) (A) + (DPTR) • RET : CALL문의 서브루틴으로부터 복귀 - (PC) ((SP)) -7-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 프로그램 분기 명령어(Program branching) • RETI : 인터럽트로부터 복귀 - (PC) ((SP)) • JZ rel : 누산기의 내용이 “0”이면 분기 - (PC) (PC) + 2, IF (A) = 0 THEN (PC) (PC) + rel • JNZ rel : 누산기의 내용이 “0”이 아니면 분기 - (PC) (PC) + 2, IF (A) = 1 THEN (PC) (PC) + rel • NOP : No Operation - 1cycle -8-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 프로그램 분기 명령어(Program branching) • CJNE <dest-byte>, <src-byte>, rel: 비교해서 같지 않으면 분기 - CJNE A, direct, rel : IF (A) (direct) THEN (PC) (PC) + rel IF (A) (direct) THEN(C) 1 ELSE (C) 0- CJNE A, #data, rel - CJNE Rn, #data, rel - CJNE @Ri, #data, rel • DJNZ <byte>, rel : 1 감소하고 “0”이 아니면 분기 - DJNZ Rn, rel : (Rn) (Rn) – 1 IF (Rn) 0 THEN (PC) (PC) + rel - DJNZ direct, rel -9-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 과제물(Report) Ⅲ • 기한 : 5월 31일(금) 17시까지 강의 도우미가 수거하여 제출 1. MCS-51 명령어 요약 (단, 친필로 작성) - 명령어 : 설명 . 명령어 나열(예) - DJNZ <byte>, rel : 1 감소하고 “0”이 아니면 분기 . DJNZ Rn, rel . DJNZ direct, rel -10-청강문화산업대학 이동통신과