메모리
메모리는 코드와 데이터가 저장되는 공간
값들을 저장한 뒤 이 값을 가리킬 주소가 필요한데, 바이트 단위의 주소 부여
인텔 8086은 segment:offset 주소 결합으로 물리적 주소 지정
레지스터
CPU 내 위치하는 저장 공간
범용 레지스터
- AX
- AH, AL
- 수학 연산, I/O 연산, INT21
- BX
- BH, BL
- Base 또는 Pointer
- CX
- CH, CL
- 루프 및 반복
- DX
- DH, DL
- 다양한 데이터, 문자 출력
- AX
세그먼트 레지스터
- CS: 코드를 저장하는 메모리 블록
- DS: 데이터를 저장하는 메모리 블록
- EX: 비디오 등의 처리를 위해 사용
- SS: 루틴으로부터 return address를 저장하기 위해 프로세서에 의해 사용
인덱스 레지스터
- SI: 문자열/배열 소스 지정
- DI: 문자열/배열 목적지 지정
- IP: 다음 명령의 주소 저장
스택 레지스터
- BP: 스택 베이스 포인터
- SP: 스택 포인터
특수목적 레지스터
- IP: 다음에 실행될 명령어 주소 저장
- Flag: 분기를 위해 사용 (1byte)
8086 어셈블리어
MOV
- 레지스터에 값 부여
- MOV 목적지, 값
- MOV AX, 56h -> AX에 56h 저장
- MOX AX, BX -> AX에 BX 값 저장
XCHG
- 두 레지스터 값 변경
- XCHG 레지스터1, 레지스터2
INC, DEC
- 데이터의 값을 1 증가(INC)하거나 1 감소(DEC)
- INC DX
- DEC DX
PUSH, POP
- 레지스터의 값을 stack에 넣거나(push) 가져옴(pop)
- PUSH 레지스터
- POP 레지스터
사칙연산
- ADD (덧셈)
- ADD 레지스터1, 레지스터2
- ADD 레지스터, 값
- SUB (뺄셈)
- SUB 레지스터1, 레지스터2
- SUB 레지스터, 값
- MUL (곱셈)
- MOV AX, 5h
- MOX BX, 4Fh
- MUL BX --> AX * BX 연산이 이루어져 AX에 저장됨
- DIV (나눗셈)
- MOV AX, 5h
- MOV BX, 4Fh
- DIV BX --> AX / BX 연산이 이루어져 AX에 저장됨
- ADD (덧셈)
논리 연산
- AND
- AND 레지스터1, 레지스터2
- AND 레지스터, 값
- OR
- OR 레지스터1, 레지스터2
- OR 레지스터, 값
- XOR
- XOR 레지스터1, 레지스터2
- XOR 레지스터, 값
- NOT
- NOT 레지스터
- AND
명령어 형식
- 지시어Directives
- 기계어로 번역되지 않고 어셈블러에게만 명령 지시
- 명령어Instruction
- 기계어로 번역되며 기계에 의해 실행
- 종류
- 연산항 0개
- CLC (캐리 플래그 0으로 설정)
- 연산항 1개
- DEC CX (CX -= 1)
- 연산항 2개
- MOV AX, BX (BX의 값을 AX에 삽입)
- 연산항 0개
데이터 정의
[레이블] [정의] 식[,반복]
정의에 들어가는 것
- DB: 바이트 정의
- DW: 워드 정의
- DD: 2워드 정의
- DQ: 4워드 정의
- DT: 10바이트 정의
분기와 표지
순차적 실행
- 일반적으로 프로그램은 명령어가 저장된 순서로 실행
조건 분기
- 명령어 분기: 명령어 실행 순서 변경
무조건 분기
- JMP, CALL 등
주소 지정 방식
8086 어셈블러에서의 3가지 주소 지정 방식
- 값 즉시 지정
- 연산항에 8비트 또는 16비트 숫자 값 지정
- 직접 주소 지정
- 대상이 되는 레지스터나 메모리 번지를 그대로 연산항으로 사용
- 종류
- 레지스터 직접 주소 지정
- 메모리 직접 주소 지정
- 간접 주소 지정
- 2번째 항에서 명령어의 주소가 저장된 주소값을 지정 ([]로 레지스터 감싸기]
- 종류
- 레지스터 간접 주소 지정
- 베이스 주소 지정
- 인덱스 주소 지정
- 베이스 인덱스 주소 지정
'System Programming' 카테고리의 다른 글
| [시스템 프로그래밍] 인텔 프로세서 구조 (0) | 2025.10.21 |
|---|---|
| [시스템 프로그래밍] 컴퓨터 동작의 기본 개념과 명령어 해석 (0) | 2025.10.20 |
| [시스템 프로그래밍] 개요 / 언어의 계층구조와 컴파일 과정 (0) | 2025.10.20 |
댓글