141 likes | 765 Views
8051 마이크로컨트롤러 제 3 장 . 명령어 집합. 어셈블리 프로그래밍. 어셈블리어 문장 형식 - Label Field : 레이블 / 심볼 표현 레이블 - START : MOV A, #0FFH ;”START” 는 주소 심볼 - PAR EQU 500 ;”PAR” 는 심볼
E N D
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블리 프로그래밍 • 어셈블리어 문장 형식 - Label Field : 레이블 / 심볼 표현 레이블 - START: MOV A, #0FFH;”START”는 주소 심볼 - PAR EQU 500;”PAR”는 심볼 - Operator Field : Mnemonic(ADD, MOV, DIV, INC etc.), 어셈블러 지시어 (ORG, EQU, DS, END etc.) - Operand Field : 여러 개의 오퍼랜드때는 콤마(,)로 분리 - Comment Field : 세미콜론(;)으로 시작 -1-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블리 프로그래밍 • 숫자 표기 진수 첨자 사용 예 10진수 없다, D, d MOV A, #149 16진수 H, h MOV A, #95H 2진수 B, b MOV A, #10010101B 8진수 Q, q, O, o MOV A, #225Q * 16진수는 레이블과 구별하기 위하여 처음에 숫자가 명시 (즉, “A5H”가 아니고 “0A5H”) * 마이너스(-)인 경우는 숫자 앞에 마이너스 부호(-) 붙임 -2-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블리 프로그래밍 • ASCII 문자 표기 CJNE A, #’Q’, AGAIN SUBB A, #’Q’ ;ASCII 코드를 2진수로 변환 MOV DPTR, #’AB’ MOV DPTR, #4142H ;위와 같음 * 주의 1. Label은 반드시 첫 번째 행부터 시작 2. Label은 반드시 콜론(:) 표기, Symbol은 스페이스로 분리 3. Operator와 Operand는 스페이스로 분리 -3-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블리 프로그래밍 • 산술 연산자 + …… 덧셈, - …… 뺄셈, * …… 곱셈, / …… 나눗셈, MOD …… 나머지(나눗셈 후) (Ex) MOV A, #10 + 10H = MOV A, #1AH MOV A, #25 MOD 7 = MOV A, #4 -4-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블리 프로그래밍 • 논리 연산자 OR …… 논리적 합, AND …… 논리적 곱, XOR …… 논리적 배타적 합, NOT …… 논리적 부정 (Ex) 1. MOV A, #’9’ AND 0FH = MOV A, #9 2. THREE EQU 3 MINUS_THREE EQU -3 #(NOT THREE) + 1 = #MINUS_THREE = #11111101B -5-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블리 프로그래밍 • 특별 연산자 SHR …… 오른쪽으로 이동, SHL …… 왼쪽으로 이동, HIGH …… 상위 바이트, LOW …… 하위 바이트, ( ) …… 연산순위 우선 (Ex) 1. MOV A, #HIGH 1234H = MOV A, #12H 2. VALUE EQU -500 MOV TH1, #HIGH VALUE = #HIGH(-500) = #0FEH MOV TL1, #LOW VALUE = #LOW(-500) = #0CH -6-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블리 프로그래밍 • 비교 연산자 EQ 같음, NE 같지 않음,LT < 보다 작다, LE보다 작거나 같다, GT > 보다 크다, GE보다 크거나 같다 (두 오퍼랜드 사이에 사용, 결과는 참(00H)이나 거짓(FFH)) • 연산자 우선순위 ( ) | HIGH LOW | * / MOD SHL SHR | + - | EQ NE LT LE GT GE = < > | NOT | AND | OR XOR -7-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블러 지시어 • 어셈블러 지시어(directive) - 어셈블러가 어셈블할 때 필요한 정보를 제공 (마이크로프로세서에 의해서 실행가능한 어셈블리 언어가 아님) - 어셈블러 지시어 어셈블리 상태 제어: ORG, END, USING 세그먼트 선택: RSEG, CSEG, DSEG, XSEG, ISEG, BSEG 메모리 공간 초기화 및 예약: DS, DB, DW, DBIT 심볼 정의: SEGMENT, EQU, SET, DATA, XDATA, BIT, CODE 프로그램 링크: PUBLIC, EXTERN -8-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블러 지시어 • 어셈블리 상태 제어 - ORG . 위치 카운터 지정 . “Ex” : ORG 8000H - END . 소스 프로그램 끝 - USING . 레지스터 뱅크 선택 . “Ex” : USING 3 레지스터 뱅크 3 선택 -9-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블러 지시어 • 세그먼트 선택 지시어 기 능 사용 “예” RSEG <segment_name>상대 세그먼트 시작 RSEG CODE CSEG AT <address>코드 세그먼트 시작 CSEG AT 1000H DSEG AT <address>직접번지 가능한 Data DSEG AT 80H Memory 세그먼트 시작 XSEG AT <address>외부 D.M. 세그먼트 시작 XSEG AT 8000H ISEG AT <address>간접 D.M. 세그먼트 시작 ISEG AT 90H BSEG AT <address>비트 D.M. 세그먼트 시작 BSEG AT 20H -10-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블러 지시어 • 메모리 공간 초기화 및 예약 지시어 기 능 사용 “예” [label:] DS expression바이트 단위 메모리 예약 DSEG AT 30H LENGTH EQU 40 BUFFER: DS LENGTH [label:] DB expression바이트 단위 초기값 설정 TABLE: DB 0(, 1, 4) [label:] DW expression워드 단위 초기값 설정 ZERO: DW 1234H [label:] DBIT express.비트 단위 메모리 예약 BSEG PRFLAG: DBIT 1 -11-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블러 지시어 • 심볼 정의 지시어 기 능 사용 “예” [label] EQU <수식>값 할당(재정의 불가능) LENGTH EQU 40 [label] SET <수식>값 할당(재정의 가능) LENGTH SET 40 [label] BIT <수식>비트 주소 할당 X BIT 20H [label] DATA <수식>직접 데이터 주소 할당 RES DATA 40H [label] XDATA <수식>외부 데이터 주소 할당 BUF IDATA 8000H [label] IDATA <수식>간접 데이터 주소 할당 PLC IDATA 80H [label] CODE <수식>프로그램 주소 할당 START CODE 00H -12-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블러 지시어 • 심볼 정의 - SEGMENT . symbol <SEGMENT> {segment_type, 재배치 가능한 형} CODE : 코드 메모리 공간 DATA : 직접 주소 지정(00H~7FH) 내부 데이터 메모리 공간 XDATA : 외부 데이터 메모리 공간 IDATA : 간접 주소 지정(00H~FFH) 내부 데이터 메모리 공간 BIT : 비트 주소 지정(20H~2FH) 내부 데이터 메모리 공간 . “Ex” : EPROM SEGMENT CODE -13-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제3장. 명령어 집합 어셈블러 지시어 • 프로그램 링크 - 분리되어 있는 모듈(파일)을 연결 지시어 기 능 PUBLIC symbol, symbol, …심볼을 퍼블릭 선언 EXTERN segment_type(symbol, symbol, … )심볼이 다른 모듈에 정의 MAIN.SRC MESSAGE.SRC EXTERN CODE(HELLO, GOOD_BYE) PUBLIC HELLO, GOOD_BYE . . . . . . . . . . CALL HELLO HELLO: (begin subroutine) . . . . . . . . . . CALL GOOD_BYE RET . . . . . GOOD_BYE: (begin subroutine) END . . . . . -14-청강문화산업대학 이동통신과