본문 바로가기

카테고리 없음

전산노트 : 어셈블리어

728x90
1세대 - 8008(1970년대 초)
2세대 - 8080(1974년)
3세대 - 8086(1978년)
이후 ...
8086 변형 - 8088
8086 발전 - 80286, 80386, 80486, Pentium, Celeron ... 생략

어셈블리어의 이점
1. 프로그램이 어떻게 운영체제, 프로세서, 바이오스와 동작하는지 알 수 있다.
2. 데이터가 어떻게 표현되며, 기억장치와 외부장치에 저장되는지 알 수 있다.
3. 프로세서가 어떻게 명령어에 액세스하여 실행시키는지, 또한 명령어가 어떻게 데이터에 액세스하고 처리하는지가 명확해진다.
4. 프로그램이 어떻게 외부장치에 액세스하는지가 명확해진다.
5. 어셈블리 언어로 작성된 프로그램은 고급 언어로 작성된 프로그램에 비해 메모리 공간을 훨씬 적게 처리하고 실행 시간도 매우 짧다.
6. 상주 프로그램과 인터럽트 서비스 루틴은 대부분 항상 어셈블리 언어로 개발된다.
 
어셈블리어를 공부하고 나면 다음과 같은 일들을 할 수 있다.
1. PC 하드웨어를 이해한다.
2. 기계어 코드와 16진 형식을 이해한다.
3. 프로그램을 어셈블하고, 링크하고, 실행시키는 절차를 이해한다.
4. 키보드와 화면을 다루고, 산술 연산을 수행하고, 아스키 형식과 2진 형식 사이에서 변환하고, 테이블 검색과 정렬을 수행하고, 디스크 입출력을 수행하기 위해 어셈블리 언어로 프로그램을 작성한다.
5. 프로그램 디버깅의 보조 수단으로서 기계 실행을 추적한다.
6. 프로그램을 더 빠르게 작성하기 위해 자신의 고유한 매크로 명령어를 작성한다.
7. 개별적으로 어셈블된 프로그램들을 하나의 실행 가능 프로그램으로 링크한다.

컴퓨터 구조
- 컴퓨터의 주요 내부 하드웨어는 프로세서, 메모리, 레지스터 등이 있으며, 외부 하드웨어에는 키보드, 모니터, 디스크, CD-ROM 등과 같은 컴퓨터의 입출력 장치가 있다.

비트(Bit)
- 컴퓨터 기억장소의 기본 구성 요소(Off:0, On:1)

바이트(Byte)
- 9개(패리티비트와 데이터 표현을 위한 8개 비트)의 관련된 비트들을 묶어서 바이트라 한다.
- 바이트는 내부 메모리와 외부 장치 상의 기억장소 위치를 표현한다.

패리티 규칙
- 한 바이트에서 값이 1인 비트의 개수는 항상 홀수여야 한다.
- 패리티 비트 처리 사항은 자동으로 수행되는 하드웨어 기능이며, 이러한 사항에 대해서 관심 가질 필요는 없다.
ex) 문자 A는 1인 비트가 2개이므로, 프로세서는 자동으로 패리티 비트를 1로 설정, 문자 *는 1인 비트가 3개이므로, 프로세서는 패리티 비트를 0으로 설정한다.

데이터 항목 또는 필드
- 특정 값을 정의하는 바이트들의 그룹을 보통 데이터 항목 또는 필드라고 한다.
- 워드: 2바이트 데이터 항목
- 이중워드: 4바이트 데이터 항목
- 4중워드: 8바이트 데이터 항목
- 패러그래프: 16바이트 데이터 항목
- KiloByte, MegaByte, GigaByte
- 메모리에 속한 각 바이트는 유일한 주소를 갖는다.

아스키코드
- 데이터의 표준화를 위해서, 마이크로컴퓨터 설계자들은 ASCII(American Standard Code for Information Interchange) 코드를 채택하였다.
- 한 바이트가 8비트를 포함하기 때문에, PC 사용자들은 256개의 문자를 제공한다.

버스
- 시스템 보드 상에 선으로 연결된 버스는 구성 요소들을 연결한다.
- 버스는 프로세서, 메모리, 외부 장치들 간에 데이터를 전송하며, 실질적으로 데이터 흐름을 관리한다.

프로세서
- 내부클록은 프로세서의 모든 연산들을 동기화하고 제어한다.
- 클록 사이클은 메가헤르츠(Megahertz: 초당 백만 사이클) 관점에서 기술된다.

8088 프로세서
- 16비트 레지스터와 8비트 데이터 버스를 가지며, 1MB의 메모리를 주소지정할 수 있다.
- 한 번에 하나의 프로그램을 실행하는 소위 리얼모드로 동작한다.

8086 프로세서
- 16비트 데이터 버스를 가지고 있어서 더 빠르게 동작한다.

80286 프로세서
- 리얼모드와 보호모드에서 동작할 수 있다.

* 보호모드: 한 가지 이상의 작업을 동시에 실행시키는 멀티태스킹을 가능하게 하고, 이러한 작업들을 서로 간에 보호하게 한다.

80386 프로세서
- 32비트 레지스터와 32비트 데이터 버스를 가지고, 4GB의 메모리를 주소 지정할 수 있다.
- 프로세서는 보호모드는 물론 가상모드를 지원한다.

* 가상모드: 메모리의 일부를 디스크 상에 교환할 수 있다.

80486 프로세서
- 캐시 메모리가 프로세서에 연결되어 있어서, 프로세서는 가장 최근에 사용한 명령어와 데이터의 복사본을 저장해 두는 것이 가능하다.
- 이전까지 단일 단계 파이프라인을 갖는다.

펜티엄 프로세서
- 32비트 레지스터와 64비트 데이터 버스를 가지고, 데이터와 메모리에 대해서 별도의 캐시를 갖는다.
- 파이프라인 구조

펜티엄2와 펜티엄3
- 시스템 캐시와 메모리에 대한 별도의 경로를 제공하는 이중 독립 버스를 갖는다.
- 12단계의 슈퍼 파이프라인 구조