Transcript chap1
Chap1-1 컴퓨터란? Chap1-2 PC 하드웨어/소프트웨어 Chap1-3 어셈블리 언어 • 마이크로프로세서 – 컴퓨터의 산술, 논리, 제어기능 담당 – 각종 전자소자의 집적 • Intel 8008, 8086, 8088, 80186, 80286, 80386, 80486, Pentium(586), PentiumPro(686).. • 기계어 – 프로세서가 이해 할 수 있는 고유의 명령어 집합 – 이진수로 표현됨으로 프로그램하기 곤란 • 어셈블리 언어 – 기계 명령어를 사람이 좀더 이해하기 쉬운 기호로 표현 • 기계어와 1대1 대응 (0000000100001000 <=> ADD) – 어셈블리언어 프로그램 => 기계어 명령 (어셈블러) Chap1-4 어셈블리언어 • 고급언어 Vs. 저급언어 – 고급언어 : C, Basic등 기계어와 상관없는 프로그램언어 • 고급언어프로그램 => 기계어 (컴파일러) • 장점 : 프로그램하기 용이 • 단점 : – 자동번역으로 인한 비효율적 기계어 생성 가능성 – 하드웨어의 직접적인 제어 불가능 – 저급언어 : 어셈블리언어 • 단점 : 프로그램하기 어려움 • 장점 : – 효율적인 프로그램 작성 가능 – 하드웨어의 직접적인 제어 – 컴퓨터의 내부 작동원리 이해 Chap1-5 1. PC H/W의 기본 특성 • • • • • 비트와 바이트 프로세서 메모리 세그먼트와 주소지정 레지스터 Chap1-6 비트와 바이트 • 비트 – 컴퓨터 상에 데이터 표현의 최소 단위 – 0/1 • 바이트 – 9개의 비트로 구성 • 8개 비트는 데이터 표현에 사용 • 1개 비트는 parity로 사용 (홀수, 짝수 parity) – 데이터 표현: ‘A’ 비트 내용 비트 번호 0 1 0 0 0 0 0 1 7 6 5 4 3 2 1 0 1 홀수패리티 Chap1-7 비트와 바이트 (계속) • 다른 데이터 표현 단위 – – – – – – – – word doubleword quadword paragraph kilobyte megabyte gigabyte terabyte : 2 바이트 : 4 바이트 : 8 바이트 : 16 바이트 (경계) : 2**10 : 2**20 : 2**30 : 2**40 • 메모리의 각 바이트는 유일한 주소를 갖는다 Chap1-8 이진수 16진수 10진수 • 2진수 – 기계에 사용되는 수의 단위 – 큰 수 표시하고 이해하기에 곤란 • 16진수 – 이진수를 보다 함축적으로 표시가능 – 이진수 <=> 16진수 변환 용이 • 10진수 – 인간이 사용하는 수의 단위 – 2진수(16진수) <=> 10진수 변환 불편 • 연습 (연습문제) – 진수간의 변환 및 진수연산 – 이진법을 사용한 음수의 표현 (2의 보수) Chap1-9 16 진수 표현 binary: 0101 1001 0011 0101 1011 1001 1100 1110 hexa: – 이진수의 축약 표현 방법 – 메모리 주소, 기계어 표현시 사용 – 어셈블리 프로그램 상에서 16진수 표현 25H cf) 이진수의 표현: 01001100 혹은 01001100B 십진수의 표현: 75 Chap1-10 이진 산술(binary arithmetic) • 덧셈/뺄셈 decimal 65 + 42 binary 01000001 + 00101010 60 - 53 - Chap1-11 16진 산술(Hexadecimal arithmetic) • 덧셈 decimal 165 + 42 binary 10100101 + 00101010 hexa-decimal A5 2A 153 - 60 - - Chap1-12 음의 이진수(negative binary number) • 음수 표현 – 부호 비트(가장 왼쪽에 위치한 비트)가 1이다 – 2의 보수 표기법 사용: “모든 비트를 역전시키고 1을 더한다” + 65: 비트를 역전: 1을 더한다: -65: 01000001 Chap1-13 음의 이진수 • 음수의 절대값 구하기: 2의 보수 사용 -65: 비트를 역전시킴: 1을 더함: +65: 10111111 decimal + 65 - 65 binary 00 Chap1-14 이진 산술 • 뺄셈 – 빼고자 하는 수의 2의 보수를 취하고 그 수를 더하시오 65 + (-42) 01000001 + 23 * 42의 2의 보수: + 42 - 42 00101010 Chap1-15 이진수의 표현 Decimal ….. +3 +2 +1 0 -1 -2 -3 ….. binary 00000000 ….. Chap1-16 프로세서 • PC H/W 구성 요소 – 내부: 마이크로프로세서, RAM, ROM,버스,확장슬롯 등 – 외부: 키보드, 모니터, 프린터, 디스크 등 • PC 성능 – 프로세서 속도, 메모리 용량, 레지스터, 데이터 버스 프로세서 레지스터 데이터 버스 특징 8088/80188 8086/80186 80286 80386 80486 Pentium PentiumPro 16비트 16비트 16비트 32비트 32비트 32비트 8비트 16비트 16비트 32비트 32비트 64비트 주소 24비트 주소 32비트 부동소수연산 슈퍼스칼라 내장 캐쉬 Chap1-17 EU: Execution Unit BIU: Bus Interface Unit ... 세그먼트 레지스터 레지스터 버스 제어 장치 ALU 제어장치 flag 레지스터 IP ... 명령어 큐 Chap1-18 메모리 유형 및 구조 960K 64K ROM: 컴퓨터의 기본 기능 768K 192K ROM: BIOS 640K 128K RAM: video display 0 640K RAM Chap1-19 메모리 상에 데이터의 표현 • 데이터는 메모리에 역순으로 표현됨 – 낮은 순서 바이트는 낮은 메모리 주소에, 높은 순서 바 이트는 높은 메모리 주소에 저장된다. – 예제: 0529H 레지스터 05 29 메모리 29 05 주소 7612 Least significant byte 7613 most significant byte Chap1-20 세그먼트와 주소 지정 • 세그먼트 – paragraph boundary 상에서 시작되는 특정 메모리 영역 – 세그먼트의 크기는 최대 64K 바이트 • 세그먼트 종류 – 코드 세그먼트 • 기계 명령어를 포함하는 영역 – 데이터 세그먼트 • 프로그램에서 정의된 데이터, 상수, 작업 공간 등을 포함하는 영역 – 스택 세그먼트 • 임시 공간 혹은 부프로그램 호출시 사용되는 영역 Chap1-21 세그먼트 경계 레지스터 SS DS CS 스택 세그먼트 데이터 세그먼트 코드 세그먼트 * 세그먼트 시작 주소는 16즉 hex 10으로 나누어지기 때문에 항상 주소의 오른쪽 끝 숫자는 0이다 * 세그먼트 주소 038E0는 038E로 저장된다, 필요할 경우에는 038E[0]으로 표현한다. Chap1-22 세그먼트 옵셋 • 프로그램의 모든 메모리 주소는 세그먼트의 시작 주소에 상대적이다. 세그먼트 시작 주소 옵셋 (offset) . . . 특정 주소 . . . 예: DS 세그먼트 주소: 옵셋: 실제주소: 038E0H 0032H ? Chap1-23 레지스터 • 세그먼트 레지스터 – CS 레지스터: • 프로그램 코드의 시작 주소를 가리킨다 • 다음 실행될 명령어 주소: CS + IP – DS 레지스터 • 데이터 세그먼트의 시작 주소 • 특정 주소: DS + 명령어 상에 명시된 옵셋 값 – SS 레지스터 • 스택 세그먼트의 시작 주소 • 특정 주소: SS + SP – ES (extra segment) 레지스터 • 스트링 연산시 사용 • DI (인덱스) 레지스터와 함께 사용 Chap1-24 레지스터 • 포인터 레지스터 – IP(instruction pointer) 레지스터 예) CS = 39B4[0]H, IP = 514H 일 때, 다음에 실행될 명 령어의 주소는? – SP(stack pointer) 레지스터 예) SS = 4BB3[0], SP = 412H 일 때, 현재 처리되고 있는 스택 상의 데이터 주소는? – BP(base pointer) 레지스터 • 매개변수 참조시 사용 • 매개변수 주소: SS + BP Chap1-25 레지스터 • 범용 레지스터 – AX 레지스터 • 입/출력, 산술 연산시 누산기(accumulator)로 사용 AX: AH AL – BX 레지스터 • 주소 지정시 인덱스로 사용: base 레지스터 – CX 레지스터 • 루프 반복 회수 계산시 사용: count 레지스터 – DX 레지스터 • 입/출력, 곱셈 , 나눗셈 연산시 사용: data 레지스터 * 덧셈, 뺄셈에 대해서 위의 모든 범용 레지스터 사용 가능 Chap1-26 레지스터 • 인덱스 레지스터 – SI 레지스터 • DS와 함께 스트링 연산에 사용 – DI 레지스터 • ES와 함께 스트링 연산에 사용 • 예제: MOV ADD MOV MOV AX, 61B2 BX, AX CL, 0B2 CH, 061 Chap1-27 플래그 레지스터 • 처리 결과나 컴퓨터의 현재 상태를 보여준다 • • • • • • • • • OF(overflow): 오버플로우 발생시 설정 DF(direction): 문자열의 이동이나 비교 순서 결정 IF(interrupt): 외부 인터럽트 발생시 설정 TF(trap): 단일 스텝 모드시 설정(DEBUG 사용시) SF(sign): 산술 연산 결과 명시(양수/음수) ZF(zero): 산술이나 비교 연산 결과 명시(0 여부) AF(auxiliary carry): 특정 산술에서 캐리 발생 여부 PF(parity):even or odd 패러티 명시 CF(carry): 산술, 쉬프트 연산시 캐리 발생 여부 O D I 11 T S Z A P C 6 4 2 0 Chap1-28 연습문제