๋ช ๋ น์ด ์ฃผ์ ์ง์ ๋ฐฉ์(Addressing mode)์ด๋?
- ํ๋ก๊ทธ๋จ ์ํ ์ ์คํผ๋๋(ํผ์ฐ์ฐ์)๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ
- ์คํผ๋๋๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ ์ ์คํผ๋๋๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ํด์ํ๋ ๊ท์น์ ์ง์
์ ํจ์ฃผ์๋?
์ฃผ์ ์ง์ ๋ฐฉ์์ ์ํด ๊ฒฐ์ ๋๋ ์คํผ๋๋์ ์ฃผ์
์ฃผ์ ์ง์ ๋ฐฉ์ ํ๋๋ฅผ ๊ฐ์ง ๋ช ๋ น์ด ํ์๊ณผ ํ๋๋ณ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํ๋ | ์ค๋ช |
์ฐ์ฐ์ฝ๋ | ์ํํ ์ฐ์ฐ์ ์ข ๋ฅ๋ฅผ ์ง์ |
์ฃผ์ ์ง์ ๋ฐฉ์ | ์ฐ์ฐ์ ํ์ํ ์คํผ๋๋์ ์ฃผ์๋ฅผ ์์๋ด๋๋ฐ ์ฌ์ฉ |
์คํผ๋๋ | ์ฐ์ฐ์ ๋์์ด ๋๋ ๊ธฐ์ต์ฅ์น ์ฃผ์ ํน์ ๋ ์ง์คํฐ |
๋ช ๋ น์ด์ ์ฃผ์ ์ง์ ๋ฐฉ์์ ์ปดํจํฐ์ ๋ฐ๋ผ ์์ ๊ฐ์ด ๋ณ๋๋ก ์ ์๋๊ธฐ๋ ํ๊ณ ์ฐ์ฐ๋ฐฉ์๊ณผ ๊ณตํต์ผ๋ก ์ ์๋๊ธฐ๋ ํ๋ค.
์ฃผ์ ์ง์ ๋ฐฉ์์ ์ข ๋ฅ
1. ์๋ฏธ ์ฃผ์ ์ง์ ๋ฐฉ์
2. ์ฆ์น ์ฃผ์ ์ง์ ๋ฐฉ์
3. ์ง์ ์ฃผ์ ์ง์ ๋ฐฉ์๊ณผ ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์
3. ๋ ์ง์คํฐ ์ฃผ์ ์ง์ ๋ฐฉ์๊ณผ ๋ ์ง์คํฐ ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์
4. ์๋ ์ฃผ์ ์ง์ ๋ฐฉ์
5. ์ธ๋ฑ์ค๋ ์ฃผ์ ์ง์ ๋ฐฉ์
์๋ฏธ ์ฃผ์ ์ง์ ๋ฐฉ์(Implied mode)
- ์ฃผ์ํ๋๊ฐ ํ์์๋ ๋ฐฉ์
- ๋ฌต์์ ์คํผ๋๋ ์ง์
์์ :
ADD ; TOS ← TOS + TOS-1
๊ธฐ์ต์ฅ์น ์คํ์์ ์คํ์ ๋งจ ์ ํญ๋ชฉ๊ณผ ๊ทธ ์๋ ํญ๋ชฉ์ ๋ํด ์คํ์ ๋งจ ์์ ์ ์ฅํ๋ค.
์คํผ๋๋๊ฐ ์คํ์ ๋งจ ์์ ์๋ค๋ ๊ฒ์ ๋ฌต์์ ์ผ๋ก ๊ฐ์ ํ๋ค.
MUL X ; AC ← AC * M[X]
AC์ ๋ด์ฉ๊ณผ M[X]์ ๋ด์ฉ์ ๊ณฑํด AC์ ์ ์ฅํ๋ค.
M[X]์ ๊ณฑํด์ง๋ ๋์๊ณผ ์ ์ฅ๋๋ ์์น๋ ๋ชจ๋ AC์ธ ๊ฒ์ ๋ฌต์์ ์ผ๋ก ๊ฐ์ ํ๋ค.
STORE X ; M[X] ← AC
AC์ ๋ด์ฉ์ M[X]์ ์ ์ฅํ๋ค.
์ ์ฅ๋๋ ๋ด์ฉ์ด AC์ธ ๊ฒ์ ๋ฌต์์ ์ผ๋ก ๊ฐ์ ํ๋ค.
์ฆ์น ์ฃผ์ ์ง์ ๋ฐฉ์(Immediate mode)
- ์ฃผ์ํ๋์ ์ค์ ์ฌ์ฉํ ์คํผ๋๋(ํผ์ฐ์ฐ์)๋ฅผ ์ง์
- ๋ ์ง์คํฐ๋ ๋ณ์๋ฅผ ์์๊ฐ์ผ๋ก ์ด๊ธฐํํ๋๋ฐ ์ ์ฉ
์์ :
LDI 100, R1 ; R1 ← 100
๋ ์ง์คํฐ R1์ ๋ฐ์ดํฐ 100์ ์ด๊ธฐํํ๋ค.
์ง์ ์ฃผ์ ์ง์ ๋ฐฉ์๊ณผ ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์
์ง์ ์ฃผ์ ์ง์ ๋ฐฉ์(Direct-addressing mode)
- ์ฃผ์ํ๋์ ์คํผ๋๋์ ์ฃผ์(=์ ํจ์ฃผ์)๋ฅผ ์ง์ ์ ์ฅ
- ์ฅ์ : ๊ธฐ์ต์ฅ์น ์ ๊ทผ์ด ํ๋ฒ์ ์ด๋ฃจ์ด์ง
- ๋จ์ : ์คํผ๋๋ ํ๋์ ๊ธธ์ด์ ๋ฐ๋ผ ์ ๊ทผํ ์ ์๋ ๊ธฐ์ต์ฅ์น์ ์ฃผ์๊ณต๊ฐ์ ํ๊ณ๊ฐ ์์
์์ :
LDA 600 ; AC ←M[600]
M[600]์ AC๋ก ์ ์ฌํ๋ค.
โ PC(Program counter)๊ฐ ๋ช ๋ น์ด๊ฐ ์ ์ฅ๋ ์ฃผ์ 320์ ๊ฐ๊ณ ์์ผ๋ฏ๋ก 320๋ฒ์ง๋ก ๊ฐ๋ค.
โก 320๋ฒ์ง๋ ์ฐ์ฐ์ฝ๋(LDA = AC๋ก ์ ์ฌ)์ ์ฃผ์ ์ง์ ๋ฐฉ์(์ง์ ์ฃผ์)์ ๊ฐ๊ณ ์๋ค.
โข 321๋ฒ์ง๋ ์ฃผ์ํ๋ 600์ ๊ฐ๊ณ ์๋ค.
โฃ ์ด 2๊ฐ์ ๋จ์ด(word)๋ก ๊ตฌ์ฑ๋ ๋ช ๋ น์ด๋ ์ ์ด ๋ ์ง์คํฐ๋ก ์ฎ๊ฒจ์ง๋ค.
โค ๋ช ๋ น์ด์ ์ํ๊ฒฐ๊ณผ๋ AC ←M[600], ์ฆ 600๋ฒ์ง์ ์๋ 700์ด AC๋ก ์ ์ฌ๋๋ค.
โฅ PC๊ฐ ๋ ๋ฒ ์ฆ๊ฐํ๋ค.
์ฆ ์คํผ๋๋์ ์ฃผ์๋ 600์ด๊ณ M[600]์ 700์ด๋ฏ๋ก AC์ 700์ ์ ์ฌํ๋ฉฐ ๋ช ๋ น ์ํ ํ PC๋ ๋ค์ ๋ช ๋ น์ด ์ฃผ์์ธ 322๋ฅผ ๊ฐ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ์ ํจ์ฃผ์๋ ๋ช ๋ น์ด์ ์ฃผ์ ๋ถ๋ถ์ธ 600์ด๋ค.
๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์(Indirect-addressing mode)
- ์ฃผ์ํ๋์ ์ ํจ์ฃผ์๊ฐ ์ ์ฅ๋์ด ์๋ ๊ธฐ์ต์ฅ์น ์ฃผ์๋ฅผ ์ ์ฅ
- ์ฅ์ : ์ ๊ทผํ ์ ์๋ ๊ธฐ์ต์ฅ์น ์ฃผ์๊ณต๊ฐ์ด ์ค์์ฒ๋ฆฌ์ฅ์น๊ฐ ํ ๋ฒ์ ์ ๊ทผํ ์ ์๋ ๋จ์ด์ ๊ธธ์ด๋ก ๊ฒฐ์ ๋จ
- ๋จ์ : ๋ ๋ฒ์ ๊ธฐ์ต์ฅ์น ์ ๊ทผ ํ์
์์ :
LDA [600] ; AC ← M[M[600]]
M[M[600]]์ AC์ ์ ์ฌํ๋ค.
๋ง์ฝ ์ ๊ทธ๋ฆผ์ด ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์์ด๋ผ๋ฉด AC์ ์ ์ฌ๋๋ ๊ฒ์ 700์ด ์๋ M[700]์ด ๋๋ค. ์ฆ 700๋ฒ์ง์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ AC์ ์ ์ฌ๋ ๊ฒ์ด๋ค.
๋ ์ง์คํฐ ์ฃผ์ ์ง์ ๋ฐฉ์๊ณผ ๋ ์ง์คํฐ ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์
๋ ์ง์คํฐ ์ฃผ์ ์ง์ ๋ฐฉ์(Register mode)
- ์ฃผ์ํ๋์ ์คํผ๋๋(ํผ์ฐ์ฐ์)๊ฐ ๋ค์ด์๋ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์
- ๋ฐ๋ผ์ ์คํผ๋๋ ํ๋์ ๋ ์ง์คํฐ ๋ฒํธ๊ฐ ์ ์ฅ๋๋ฉฐ ์ ํจ์ฃผ์๊ฐ ์กด์ฌํ์ง ์๋๋ค.
- ์ฅ์ : ์คํผ๋๋ ํ๋๊ฐ ์ ๋ค. ๊ธฐ์ต์ฅ์น๊ฐ ์๋ ๋ ์ง์คํฐ์ ์ ๊ทผํ๋ฏ๋ก ์๋๊ฐ ๋น ๋ฆ
- ํน์ง : ๋ ์ง์คํฐ์ ์๊ฐ ์ ํ๋์ด ์์ผ๋ฏ๋ก ๋ฌดํ์ ์ฌ์ฉ ๋ถ๊ฐ
์์ :
LDA R1 ; AC ← R1
R1์ ๋ด์ฉ์ AC์ ์ ์ฌํ๋ค.
๋ ์ง์คํฐ ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์(Register-indirect mode)
- ์ฃผ์ํ๋์ ์คํผ๋๋๊ฐ ์ ์ฅ๋ ๊ธฐ์ต์ฅ์น ์ฃผ์๊ฐ์ ๊ฐ๊ณ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํ๋ ๋ฐฉ์
- ๋ฐ๋ผ์ ์ด ๋ฐฉ์์์ ์ ํจ์ฃผ์๋ ์ง์ ๋ ๋ ์ง์คํฐ์ ์๋ ์ฃผ์์ด๋ค.
์์ :
LDA (R1) ; AC ← M[R1]
๊ธฐ์ต์ฅ์น์ R1๋ฒ์ง์ ์๋ ๊ฐ์ AC์ ์ ์ฌํ๋ค.
์๋ ์ฃผ์ ์ง์ ๋ฐฉ์(Relative addressing mode)
- ์ ํจ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ํน์ ๋ ์ง์คํฐ์ ๋ด์ฉ์ ๋ช ๋ น์ด ์ฃผ์ํ๋ ๊ฐ์ ๋ํ๋ ๋ฐฉ์
- ํน์ ๋ ์ง์คํฐ๋ PC(Program counter)๋ฅผ ์ฃผ๋ก ์ฌ์ฉ
- ์ ํจ์ฃผ์ = ๋ช ๋ น์ด ์คํผ๋๋ + PC
- ์ฅ์ : ์ ์ ๋นํธ์๋ก ํํํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฒฐํ ๋ช ๋ น์ด ๊ตฌ์ฑ ๊ฐ๋ฅ
- ํน์ง : ๋ถ๊ธฐ์ฃผ์๊ฐ ๋ช ๋ น์ด ๋จ์ด์ ๊ฐ๊น์ด ์์น์ ์์ ๋ ๋ถ๊ธฐํ ๋ช ๋ น์ด์์ ์ข ์ข ์ฌ์ฉ
์์ :
LDA $ADRS ; AC ← M[ADRS + PC]
๊ธฐ์ต์ฅ์น์ ADRS + PC๋ฒ์ง์ ์๋ ๊ฐ์ AC์ ์ ์ฌํ๋ค.
๊ธฐ์ต์ฅ์น๋ก๋ถํฐ ๋ช ๋ น์ด๋ฅผ ์ฝ์์ผ๋ก์จ PC๊ฐ ์ฆ๊ฐํ๋ฏ๋ก ์ ํจ์ฃผ์๋ฅผ ๊ณ์ฐํ ๋ ๋ฐ๋์ ์ด๋ฅผ ๊ณ ๋ คํด์ผํ๋ค.
์ธ๋ฑ์ค๋ ์ฃผ์ ์ง์ ๋ฐฉ์(Indexed addressing mode)
- ์ ํจ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ์ธ๋ฑ์ค ๋ ์ง์คํฐ์ ๋ด์ฉ์ ๋ช ๋ น์ด ์ฃผ์ํ๋ ๊ฐ์ ๋ํ๋ ๋ฐฉ์
- ์ ํจ์ฃผ์ = ๋ช ๋ น์ด ์คํผ๋๋ + ์ธ๋ฑ์ค ๋ ์ง์คํฐ
- ํน์ง : ๋ฐฐ์ด์ ์ธ๋ฑ์ฑํ ๋ ๋ง์ด ์ฌ์ฉ
์์ :
LDA ADRS(R1) ; AC ← M[ADRS + R1]
๊ธฐ์ต์ฅ์น์ ADRS + R1๋ฒ์ง์ ์๋ ๊ฐ์ AC์ ์ ์ฌํ๋ค.
์ฐธ๊ณ : ์ธ๋ฑ์ค๋ ์ฃผ์ ์ง์ ๋ฐฉ์์ ๋ณํ์ผ๋ก ๋ฒ ์ด์ค ๋ ์ง์คํฐ ์ฃผ์ ์ง์ ๋ฐฉ์(Base-register mode)๊ฐ ์๋ค. ์ด ๋ฐฉ์์์๋ ๋ฒ ์ด์ค ๋ ์ง์คํฐ์ ๋ด์ฉ์ ๋ช ๋ น์ด ์ฃผ์ํ๋ ๊ฐ์ ๋ํ์ฌ ์ ํจ์ฃผ์๋ฅผ ๊ณ์ฐํ๋ค. ์ด ๋ฐฉ์์ ์ธ๋ฑ์ค ๋ ์ง์คํฐ ๋์ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๊ฐ ์ฌ์ฉ๋๋ค. ์ธ๋ฑ์ค ๋ ์ง์คํฐ๊ฐ ๋ช ๋ น์ด ์ฃผ์ํ๋์ ๋ํ ์๋์ ์ธ ์์น๊ฐ์ ๊ฐ๋ ๋ฐ๋ฉด ๋ฒ ์ด์ค ๋ ์ง์คํฐ๋ ๋ช ๋ น์ด ์ฃผ์ํ๋๋ก๋ถํฐ์ ์๋์ ์ธ ๋ณ์๊ฐ์ ๊ฐ๋๋ค.
์ฃผ์ ์ง์ ๋ฐฉ์ ์ ๋ฆฌ
์ฃผ์ ์ง์ ๋ฐฉ์ | ์ค๋ช | ์ ํจ์ฃผ์ |
์๋ฏธ ์ฃผ์ ์ง์ ๋ฐฉ์ | ๋ฌต์์ ์ผ๋ก ์คํผ๋๋๋ฅผ ์ง์ ํ์ฌ ์ฃผ์ํ๋๊ฐ ํ์ ์์ | ์์ |
์ฆ์น ์ฃผ์ ์ง์ ๋ฐฉ์ | ์ฃผ์ํ๋์ ์ค์ ์คํผ๋๋(ํผ์ฐ์ฐ์)๋ฅผ ์ง์ | ์คํผ๋๋ ๊ฐ์ด ์ ์ฅ๋ ๊ธฐ์ต์ฅ์น ์ฃผ์ |
์ง์ ์ฃผ์ ์ง์ ๋ฐฉ์ | ์ฃผ์ํ๋์ ์คํผ๋๋์ ์ฃผ์(์ ํจ์ฃผ์)๋ฅผ ์ง์ | ์ฃผ์ํ๋ ๊ฐ |
๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์ | ์ฃผ์ํ๋์ ์ ํจ์ฃผ์๊ฐ ์ ์ฅ๋์ด ์๋ ๊ธฐ์ต์ฅ์น ์ฃผ์๋ฅผ ์ง์ | ์ฃผ์ํ๋ ๊ฐ์ด ๊ฐ๋ฆฌํค๋ ๊ธฐ์ต์ฅ์น ๊ฐ |
๋ ์ง์คํฐ ์ฃผ์ ์ง์ ๋ฐฉ์ | ์ฃผ์ํ๋์ ์คํผ๋๋(ํผ์ฐ์ฐ์)๊ฐ ๋ค์ด์๋ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํ๋ ๋ฐฉ์ | ์์ |
๋ ์ง์คํฐ ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์ | ์ฃผ์ํ๋์ ์คํผ๋๋๊ฐ ์ ์ฅ๋ ๊ธฐ์ต์ฅ์น ์ฃผ์๊ฐ์ ๊ฐ๊ณ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํ๋ ๋ฐฉ์ | ๋ ์ง์คํฐ์ ์๋ ์ฃผ์ |
์๋ ์ฃผ์ ์ง์ ๋ฐฉ์ | ํน์ ๋ ์ง์คํฐ์ ๋ด์ฉ์ ๋ช ๋ น์ด ์ฃผ์ํ๋ ๊ฐ์ ๋ํ๋ ๋ฐฉ์ | ์ฃผ์ํ๋ + PC |
์ธ๋ฑ์ค๋ ์ฃผ์ ์ง์ ๋ฐฉ์ | ์ธ๋ฑ์ค ๋ ์ง์คํฐ์ ๋ด์ฉ์ ๋ช ๋ น์ด ์ฃผ์ํ๋ ๊ฐ์ ๋ํ๋ ๋ฐฉ์ | ์ฃผ์ํ๋ + IR |
๊ทธ๋ฆผ์ ๋ณด๊ณ ์๋ ํ์์ ์ ํจ์ฃผ์์ AC๋ก ์ ์ฌ๋๋ ์คํผ๋๋ ๊ฐ์ ์์ฑํด ๋ณด์. R1์ด ์ธ๋ฑ์ค ๋ ์ง์คํฐ๋ผ๊ณ ๊ฐ์ ํ๋ค. LDA๋ AC๋ก์ ๋ก๋(load-to-accumulator)๋ฅผ ์๋ฏธํ๋ ์ฐ์ฐ์ฝ๋ ๊ธฐํธ์ด๋ค.
์ ๋ต โผ
โ ์ฆ์น์ฃผ์ : 251๋ฒ์ง์ ์คํผ๋๋ 500์ด AC๋ก ๋ก๋๋๋ค.
โก ์ง์ ์ฃผ์ : ์ ํจ์ฃผ์๊ฐ 500์ด ๋๋ฉฐ, 800์ด AC๋ก ๋ก๋๋๋ค.
โข ๊ฐ์ ์ฃผ์ : ์ ํจ์ฃผ์๊ฐ 800์ด ๋๋ฉฐ, 300์ด AC๋ก ๋ก๋๋๋ค.
โฃ ์๋์ฃผ์ : ์ ํจ์ฃผ์๊ฐ 500 + (250 + 2)๊ฐ ๋๋ฉฐ, 600์ด AC๋ก ๋ก๋๋๋ค.
โค ์ธ๋ฑ์ค ์ฃผ์ : ์ ํจ์ฃผ์๊ฐ 500 + 400์ด ๋๋ฉฐ, 200์ด AC๋ก ๋ก๋๋๋ค.
โฅ ๋ ์ง์คํฐ ์ฃผ์ : ์ ํจ์ฃผ์๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉฐ, 400์ด AC๋ก ๋ก๋๋๋ค.
โฆ ๋ ์ง์คํฐ ๊ฐ์ ์ฃผ์ : ์ ํจ์ฃผ์๊ฐ 400์ด ๋๋ฉฐ, 700์ด AC๋ก ๋ก๋๋๋ค.
์ฐธ๊ณ ์์
์ปดํจํฐ๊ตฌ์กฐ(๊นํ๊ทผ·์์ง๊ณค, ํ๊ตญ๋ฐฉ์กํต์ ๋ํ๊ต์ถํ๋ฌธํ์)
๋๊ธ