본문 바로가기
기타

정보처리 필기_전자계산기 구조_13강_주소지정 방식

by avvin 2019. 7. 28.


문제 정보 / 이미지 출처 (무료인강) : 

https://www.youtube.com/playlist?list=PLimVTOIIZt2aR9jib0ws7hoDVZXdtiWsK


1. 주소 지정방식


2. 즉시 / 직접 / 간접 주소 지정 방식


3. 계산에 의한 주소 지정방식


4. 상대 주소 지정방식★



어떻게 데이터를 찾아가는가에 따라 주소 지정방식이 달라짐


유효주소 (EA, Effective Address)



1. 주소 지정방식


접근 방식에 의한 주소지정 방식 > 2. 즉시 직접 간접 주소 지정방식


Temporary Addressing (임시 주소 지정 방식) 이라는 건 없다는 것만 기억!


3. 계산에 의한 주소 지정 방식


★★★


word에 대한 언급이 없으면 기본적으로 1바이트라고 두고 풀어야한다.

기억장치의 크기가 4KB이면 word가 4K (4000)개 있는것, 즉, 주소가 4K개 필요


4000은 2^12로 표현 가능. 12비트 필요


OP Code 5비트 + 주소지정방식 1비트 + 레지스터 4개의 주소를 표현하려면 2비트 필요 + 메모리 주소 표현하려면 12비트 필요


총 20비트 필요 ( 어려운 문제 )




묵시적 주소지정 방식 (Implied Addressing Mode)


오퍼랜드가 명령어에 묵시적으로 정의되어있는 방식

주소지정 방식 중에서 연산 속도가 가장 빠르다.


ex) 스택을 이용하는 0-주소 명령어 

   / SHL 3 ( 누산기의 내용을 좌측으로 3비트 만큼 쉬프트) : 별도로 대상을 지정해주지않으면 누산기를 대상으로 지정


묵시적 주소지정방식에서 산술연산을 실행하는데 사용되는 레지스터는 누산기 레지스터



즉시 주소지정 방식 (Immediate)



Op Code / 실제 데이터 


-별도의 메모리 참조를 하지 않아 연산 속도가 매우 빠르다.

 (메모리 참조 횟수를 줄일 수 있다./ 주기억장치를 찾아갈 필요가 없다)


-데이터 값의 범위가 제한적이다. 명렁어의 길이에 영향을 받기때문


-레지스터나 변수의 값을 초기화할 때 주로 사용



직접 주소지정 방식 (Direct Addressing Mode)


OP Code / Effective Address (유효주소)


명령어에 사용할 수 있는 비트 수는 제한적이라 메모리를 한번만 참조하게되면 

명령어의 오퍼랜드부 비트수가 표현할 수 있는 주소만 참조할 수 있다.

예를 들어 오퍼랜드부 비트수가 6비트이면 64개 주소만 참조할 수 있다.



★문제 제대로 읽을것! 오퍼랜드 부가 아니라 오퍼랜드를 구하는것!!! 피연산자! 유효주소가 참조하는 값!!



간접 주소방식이라면 다시 200번지를 찾아가고, 200이 유효주소인 오퍼랜드부이고, 300이 오퍼랜드가 된다.



레지스터 및 기억장소의 길이는 16비트 = word 

// word 의 개수, 길이 = 레지스터의 개수, 길이 = 기억장소(물리적인 주소)의 개수, 길이


직접 주소지정될 수 있는 주소의 개수가 2^11개 이고,


직접주소지정될 수 있는 기억장치의 용량은 2^11 * word( 16bit - 3byte ) = 4KB



간접주소지정 방식 (Indirect)


속도는 느리지만 긴 주소를 찾아갈 수 있다.





[  ADD 100, 200  ] 명령어 실행에 필요한 메모리 참조 횟수는 ?( 오퍼랜드는 메모리 간접주소 모드 )


두 값을 찾아오는데에 4번, 명령어 fetch(인출)하는데에 1번, 결과값 100번지에 저장하는데에 한번까지 다 포함하여 6번!




*LDA : LoaD to ACCumulator




선감소 (-1) 후증가(+1) 주의할 것

마지막 (7)의 50(R2)는 50에 R2를 더해야한다는 조건이 제시되지 않았다.., 문제가 처음부터 끝까지 너무 잘못됨




3. 계산에 의한 주소 지정방식 (약식, 변위 주소지정 방식)



operand + Register ( PC ( 상대주소지정 방식 ) / Base / Index )


오퍼랜드와 특정 레지스터의 값을 함께 표기해서 유효주소를 나타낸다.

가장 먼저 풀었던 예제가 계산에 의한 주소 지정방식의 한 예가 될 수 있다.??






4. 상대 주소 지정방식★(Relative 주소지정 방식)(계산에 의한 주소지정 방식)


오퍼랜드부에 PC가 더해져서 유효주소를 결정하는 방식



예시)



750번지에 JUMP A가 저장돼있고


이것을 MBR로 읽어오는 순간 PC 751로 바뀐다.

 

JUMP A는 MBR에서 IR로 옮겨가고, 이 때의 A가 오퍼랜드 


A와 PC를 더하면 56 +751 = 807 /  -61 +751 = 690


답은 3번


변위 주소지정방식이라 말하는 이유 ! >> -61이라는 주소는 없다. PC주소에서 -61을 더한 값이 주소가 되는것. A는 변위값



상대 주소지정 방식에 가장 많이 쓰이는 명령어는 분기명령어이다. 




베이스 레지스터 주소지정 방식 


유효주소 = 명령어의 주소부분 + 베이스 레지스터


프로그램의 재배피가 용이하며, 다중 프로그래밍(여러 프로그램 동시 실행) 기법에 많이 사용된다.




레지스터 주소 지정방식




(틀리라고 낸 문제..)



선형주소, 세그먼트 레지스터는 몰라도 배운대로면 4번인데,


펜티엄 프로세서에서는 베이스레지스터에 저장된 값을 유효주소라 하고, 


이 유효주소에 세그먼트의 시작주소를 더한 주소를 선형 주소(linear address)라 한다.