강좌에 들어가기 전에...
나도 남들에게 가르칠 만큼의 좋은 실력이 되지 않는건 사실이지만, 이 글을 읽어서 그동안 컴터의 구조를 몰랐던 분들이나 어셈블리 프로그래밍에 조금이라도 관심을 가지는 분에게 도움이 될수 있었으면 합니다.


여기 있는 강좌는 "8086 Microprocessor Emulator "이라는 프로그램으로 강좌가 진행이됩니다.
MASM으로도 진행이 가능하지만 MASM보다 이 프로그램이 사용이 쉬우며 직관적이기 때문에 이프로그램을 이용하도록 하겠습니다.

제작사 홈페이지(http://www.emu8086.com)

시리얼: User:ISHAAN,glaitm    Key:27R3VDEFYFX4N0VC3FRTQZX
반드시 학습 용도로만 사용하세요!(그외에는 정품을 구입하시기 바랍니다.)


어셈블리어란?

컴퓨터에서 최하위 언어, 기계어와 1:1로 표현이 가능하고, 사람의 입장에서 다루기 쉽게 각 기계어에 니모닉 기호를 이용, 표현한 언어이다.

(니모닉: 기계어에 1:1로 대응 하는 명령어)


8086 프로세서란?
1978년 인텔에서 개발된 개인용 16비트 프로세서이다.
후에 개인용 프로세서인 펜티엄, 셀러론, 코어2듀오, AMD등 많은 개인용 CPU가 이 구조를 기본으로 확장한 디자인을 가지고 있다.


8086은 명령어 길이가 가변인 CISC(Complex Instruction Set Computer, 복잡한 명령어 셋 컴퓨터)를 기반으로 디자인된 프로세스이다.


쉽게 말해 CISC 기반인 프로세스는 명령어의 길이가 일정치 않고 명령에 따라 차지하는 공간이 틀려진다는 것이다.
예를 들어보자


아래는 CISC 예제이다
주소             객체코드 명령어
0F77:0000    B8790F    MOV AX,0F79
0F77:0003    8ED8        MOV DS,AX
0F77:0005    B409        MOV AH,09

이처럼 명령어의 길이가 때마다 틀리다.

아래는 RISC의 예제다.
주소      명령어                          객체코드
2064       be done                      03 80 00 06
2068       addcc %r1,-4,%r1       82 80 7F FC
2072       addcc %r1,%r2,%r4     88 80 40 02
2076       ld %r4,%r5                  CA 01 00 00
2080       ba loop 10                  10 BF FF FB
2084       addcc %r3,%r5,%r3     86 80 CO 05
이처럼 명령어의 길이가 일정하다

물론 이것 말고 여러가지의 차이점이 있을수 있지만 본 강의에서는 필요치 않기떄문에 설명하지 않도록 하겠다.

posted by ned3y2k