문제 정보 / 이미지 출처 (무료인강) :
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)라 한다.
'기타' 카테고리의 다른 글
정보처리 필기_전자계산기 구조_15강_명령 실행 및 제어 (0) | 2019.07.28 |
---|---|
정보처리 필기_전자계산기 구조_14강_마이크로 오퍼레이션 (0) | 2019.07.28 |
정보처리 필기_전자계산기 구조_12강_명령어 형식 (0) | 2019.07.27 |
정보처리 필기_전자계산기 구조_11강_연산 -(인강 메모) (0) | 2019.07.26 |
정보처리 필기_전자계산기 구조_10강_명령어 (인강메모) (0) | 2019.07.26 |