1. ์ด์ ๋ธ๋ฆฌ์ด๋?
์ด์ ๋ธ๋ฆฌ์ด๋ ์ปดํจํฐ์ ์ง์ ์ ์ผ๋ก ์ํธ์์ฉํ๋ ์ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, ๊ธฐ๊ณ์ด์ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ๋ง๋ค์ด์ง ์ธ์ด์ ๋๋ค. ์ปดํจํฐ์ CPU๊ฐ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด์ ์ผ๋์ผ๋ก ๋์ํ๋ ์ด์ ๋ธ๋ฆฌ์ด ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์ฃผ๋ก ํน์ ํ ํ๋์จ์ด๋ฅผ ์ ์ดํ๊ฑฐ๋ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ด์ ๋ธ๋ฆฌ์ด ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๊ณ์ด๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ๋ณด๋ค ์ฝ๊ธฐ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ์ด์ ๋ธ๋ฆฌ์ด ๋ช ๋ น์ด๋ ์ฌ๋์ด ์ฝ๊ธฐ ํธํ ํํ์ ๊ธฐํธ๋ ๋จ์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ง์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์ด์ ๋ธ๋ฆฌ์ด๋ ์ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์ ํ๋์จ์ด ์ ์ด, ์๋ฒ ๋๋ ์์คํ ๊ฐ๋ฐ, ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ ๋ฑ์ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๊ฒฐํฉ์ ํตํด ์ฑ๋ฅ ์ต์ ํ๋ ํน์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ ์ฉํ๊ฒ ํ์ฉ๋ฉ๋๋ค. ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ง๋ง, ์ดํดํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ๋ ์์ผ๋ฏ๋ก ๊ฒฝํ์ด ํ์ํฉ๋๋ค.
2. ์ด์ ๋ธ๋ฆฌ์ด์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
์ด์ ๋ธ๋ฆฌ์ด์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค:
๋ ์ง์คํฐ
์ด์
๋ธ๋ฆฌ์ด์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋
์ ๋ ์ง์คํฐ์
๋๋ค. ๋ ์ง์คํฐ๋ CPU ๋ด์ ์๋ ๊ธฐ์ต ์ฅ์น๋ก์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฐ์ฐ์ ์ํํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ ๋ ์ง์คํฐ์๋ ๊ณ ์ ํ ์ด๋ฆ์ด ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด ax
, bx
, cx
, dx
๋ฑ์ด ์์ฃผ ์ฌ์ฉ๋๋ ์ผ๋ฐ์ ์ธ ๋ ์ง์คํฐ์
๋๋ค. ์ด์
๋ธ๋ฌ๋ ์ด๋ฌํ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ฐ์ ์ํํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
๋ช ๋ น์ด
์ด์ ๋ธ๋ฆฌ์ด ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด์ ์ฐ์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ ๋ช ๋ น์ด๋ ํ๋์ ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ, ์ด์ ๋ธ๋ฌ๋ ์ด๋ฌํ ๋ช ๋ น์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์คํํฉ๋๋ค.
๋ช ๋ น์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค:
[๋ ์ด๋ธ:] ๋ช
๋ น์ด [์คํผ๋๋]
- ๋ ์ด๋ธ: ๋ช ๋ น์ด์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์๋ณ์์ ๋๋ค. ๋ช ๋ น์ด์ ๋ํ ์ฐธ์กฐ ์์น๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ช ๋ น์ด: ์ค์ ๋ก ์ํํ ์์ ์ ์ง์ ํ๋ ๋ช ๋ น์ด์ ๋๋ค.
- ์คํผ๋๋: ๋ช ๋ น์ด์ ์ ๋ฌ๋๋ ์ธ์ ๋๋ ๋ฐ์ดํฐ์ ๋๋ค. ์คํผ๋๋๋ ํ์์ ๋ฐ๋ผ ์๋ต๋ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ์ก
์ด์
๋ธ๋ฆฌ์ด๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํด mov
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ๋ ์ง์คํฐ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค:
mov ax, bx ; bx ๋ ์ง์คํฐ์ ๊ฐ์ ax ๋ ์ง์คํฐ๋ก ์ ์ก
์ ์ฝ๋๋ bx ๋ ์ง์คํฐ์ ๊ฐ์ ax ๋ ์ง์คํฐ๋ก ๋ณต์ฌํฉ๋๋ค.
์ฐ์ ์ฐ์ฐ
์ด์
๋ธ๋ฆฌ์ด๋ ๋ค์ํ ์ฐ์ ์ฐ์ฐ์ ์ง์ํฉ๋๋ค. add
, sub
, mul
, div
๋ฑ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง์คํฐ ๊ฐ ๋ง์
, ๋บ์
, ๊ณฑ์
, ๋๋์
๋ฑ์ ์ฐ์ฐ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ax ๋ ์ง์คํฐ์ bx ๋ ์ง์คํฐ์ ๊ฐ์ ๋ํ ํ ๊ฒฐ๊ณผ๋ฅผ cx ๋ ์ง์คํฐ์ ์ ์ฅํฉ๋๋ค:
add cx, ax, bx ; ax + bx์ ๊ฒฐ๊ณผ๋ฅผ cx ๋ ์ง์คํฐ์ ์ ์ฅ
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ๋ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ์ ์ดํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. cmp
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ๋น๊ตํ๊ณ , je
, jne
, jg
, jl
, jmp
๋ฑ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ๋ถ๊ธฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ax ๋ ์ง์คํฐ์ ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ ๋ ์ด๋ธ zero
๋ก ๋ถ๊ธฐํฉ๋๋ค:
cmp ax, 0 ; ax์ 0 ๋น๊ต
je zero ; ax๊ฐ 0์ด๋ฉด zero๋ก ๋ถ๊ธฐ
์ ์ฝ๋๋ ax ๋ ์ง์คํฐ์ ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ zero
๋ผ๋ ๋ ์ด๋ธ๋ก ๋ถ๊ธฐํฉ๋๋ค.
์ด์ ๋ธ๋ฆฌ์ด ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ฌํ ๊ธฐ๋ณธ ๋ฌธ๋ฒ๊ณผ ๋ค์ํ ๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ๋ณต์กํ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ๋์จ์ด์ ์ง์ ์ ์ผ๋ก ์ํธ์์ฉํ๊ณ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
3. ์ด์ ๋ธ๋ฆฌ์ด์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
์ด์ ๋ธ๋ฆฌ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ ๋ช ๋ น์ด์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ์ด์ ๋ธ๋ฆฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฃผ์ํ ๋ด์ฉ๋ค์ ๋๋ค:
๋ฐ์ดํฐ ๋ก๋์ ์ ์ฅ
์ด์
๋ธ๋ฆฌ์ด์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๋ก๋ํ๊ฑฐ๋ ๋ ์ง์คํฐ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ ์ฅํ ์ ์์ต๋๋ค. mov
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ฑฐ๋ ์ ์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ์ bx
๋ ์ง์คํฐ์ ๋ก๋ํฉ๋๋ค:
mov bx, [address] ; ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ์ bx์ ๋ก๋
์ ์ฝ๋์์ address
๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ํ๋ด๋ ์์๋ ๋ ์ด๋ธ์
๋๋ค.
๋ฐ์ดํฐ ์ฐ์ฐ
์ด์
๋ธ๋ฆฌ์ด์์๋ ๋ค์ํ ์ฐ์ ์ฐ์ฐ์ ์ํํ ์ ์์ต๋๋ค. add
, sub
, mul
, div
๋ฑ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง์คํฐ ๊ฐ ๋ง์
, ๋บ์
, ๊ณฑ์
, ๋๋์
๋ฑ์ ์ฐ์ฐ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ax
๋ ์ง์คํฐ์ ๊ฐ์ bx
๋ ์ง์คํฐ์ ๋ํ ํ ๊ฒฐ๊ณผ๋ฅผ cx
๋ ์ง์คํฐ์ ์ ์ฅํฉ๋๋ค:
add cx, ax, bx ; ax + bx์ ๊ฒฐ๊ณผ๋ฅผ cx ๋ ์ง์คํฐ์ ์ ์ฅ
๋นํธ ์ฐ์ฐ
์ด์
๋ธ๋ฆฌ์ด๋ ๋นํธ ์ฐ์ฐ์ ์ง์ํ์ฌ ๋ฐ์ดํฐ์ ๋นํธ ๋จ์ ์กฐ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. and
, or
, xor
, not
, shift
๋ฑ์ ๋นํธ ์ฐ์ฐ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋
ผ๋ฆฌ ์ฐ์ฐ, ๋นํธ ๋ค์ง๊ธฐ, ๋นํธ ์ด๋ ๋ฑ์ ์์
์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ax
๋ ์ง์คํฐ์ bx
๋ ์ง์คํฐ์ ๊ฐ์ and
์ฐ์ฐํ ํ ๊ฒฐ๊ณผ๋ฅผ cx
๋ ์ง์คํฐ์ ์ ์ฅํฉ๋๋ค:
and cx, ax, bx ; ax์ bx๋ฅผ and ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ cx ๋ ์ง์คํฐ์ ์ ์ฅ
๋ฌธ์์ด ์ฒ๋ฆฌ
์ด์
๋ธ๋ฆฌ์ด์์๋ ๋ฌธ์์ด ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ช
๋ น์ด๋ค์ด ์ ๊ณต๋ฉ๋๋ค. movs
, cmps
, scas
, lods
, stos
๋ฑ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๋ก๋ํ๊ณ ์ ์ฅํ๋ฉฐ, ๋ฌธ์์ด ๊ฐ์ ๋น๊ต ๋ฐ ๊ฒ์๋ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ๋ฌธ์์ด์ ํ ๊ธ์์ฉ ์ฝ์ด๊ฐ๋ฉฐ ์ง์ ๋ ๊ฐ์ ๊ฒ์ํ๊ณ , ๋ฐ๊ฒฌ๋๋ฉด ๋ ์ง์คํฐ์ ์ ์ฅํฉ๋๋ค:
mov cx, length ; ๊ฒ์ํ ๋ฌธ์์ด์ ๊ธธ์ด
mov al, search ; ๊ฒ์ํ ๊ฐ
mov di, offset ; ๋ฌธ์์ด์ ์์ ์ฃผ์
repne scasb ; ๋ฌธ์์ด ๋ด์์ ๊ฒ์
์ ์ฝ๋์์ length
๋ ๊ฒ์ํ ๋ฌธ์์ด์ ๊ธธ์ด, search
๋ ์ฐพ์ ๋ฌธ์์ด์ด๋ฉฐ, offset
์ ๋ฌธ์์ด์ ์์ ์ฃผ์์
๋๋ค.
์ด์ ๋ธ๋ฆฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ด๋ฌํ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ํ์ฉํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ์ ๋ก๋ฉ๊ณผ ์ ์ฅ, ์ฐ์ฐ, ๋นํธ ์กฐ์ ๋ฑ์ ํตํด ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ ์ ํ๊ฒ ์กฐํฉํ์ฌ ๋ค์ํ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค.
4. ์ด์ ๋ธ๋ฆฌ์ด์ ์ ์ด๋ฌธ
์ด์ ๋ธ๋ฆฌ์ด๋ ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ์ ์ดํ๊ธฐ ์ํด ๋ค์ํ ์ ์ด๋ฌธ์ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ์ด์ ๋ธ๋ฆฌ์ด์์ ์ฌ์ฉ๋๋ ์ฃผ์ํ ์ ์ด๋ฌธ๋ค์ ๋ํ ์์ธํ ์ค๋ช ์ ๋๋ค:
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ๋ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ๋ณ๊ฒฝํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด์
๋ธ๋ฆฌ์ด์์๋ cmp
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ๋น๊ตํ๊ณ , je
, jne
, jg
, jl
, jmp
๋ฑ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ๋ถ๊ธฐํ ์ ์์ต๋๋ค.
je
(Jump if Equal): ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ผ๋ฉด ๋ถ๊ธฐํฉ๋๋ค.jne
(Jump if Not Equal): ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๋ฉด ๋ถ๊ธฐํฉ๋๋ค.jg
(Jump if Greater): ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ํฌ๋ฉด ๋ถ๊ธฐํฉ๋๋ค.jl
(Jump if Less): ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๋ถ๊ธฐํฉ๋๋ค.jmp
(Unconditional Jump): ๋ฌด์กฐ๊ฑด ๋ถ๊ธฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ax
๋ ์ง์คํฐ์ ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ zero
๋ก ๋ถ๊ธฐํฉ๋๋ค:
cmp ax, 0 ; ax์ 0 ๋น๊ต
je zero ; ax๊ฐ 0์ด๋ฉด zero๋ก ๋ถ๊ธฐ
์ ์ฝ๋์์ cmp
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ax
๋ ์ง์คํฐ์ 0์ ๋น๊ตํ๊ณ , je
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ผ๋ฉด zero
๋ก ๋ถ๊ธฐํฉ๋๋ค.
๋ฐ๋ณต๋ฌธ
๋ฐ๋ณต๋ฌธ์ ์ผ๋ จ์ ์์
์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด์
๋ธ๋ฆฌ์ด์์๋ loop
, rep
, repe
, repne
๊ณผ ๊ฐ์ ๋ฐ๋ณต ์ง์์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต๋ฌธ์ ์์ฑํ ์ ์์ต๋๋ค.
loop
๋ช
๋ น์ด
loop
๋ช
๋ น์ด๋ CX ๋ ์ง์คํฐ์ ๊ฐ์ ๊ฐ์์ํค๊ณ , ๊ฐ์๋ ๊ฐ์ด 0๋ณด๋ค ํฌ๋ฉด ์ง์ ๋ ๋ ์ด๋ธ๋ก ๋ถ๊ธฐํ๋ ์ญํ ์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก loop
๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ ํ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค:
loop label ; CX ๋ ์ง์คํฐ์ ๊ฐ์ 1 ๊ฐ์์ํค๊ณ , 0๋ณด๋ค ํฌ๋ฉด label๋ก ๋ถ๊ธฐ
๋ค์์ loop
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ 10๋ฒ ๋ฐ๋ณตํ๋ ์์ ์
๋๋ค:
mov cx, 10 ; CX ๋ ์ง์คํฐ์ 10์ ์ ์ฅ
loop label ; CX ๊ฐ 1 ๊ฐ์ ๋ฐ ๋ถ๊ธฐ
์ ์์ ์์ loop
๋ช
๋ น์ด๋ label
๋ก ๋ถ๊ธฐํ๊ธฐ ์ ์ CX ๋ ์ง์คํฐ์ ๊ฐ์ 1์ฉ ๊ฐ์์ํค๋ฉฐ, CX ๊ฐ์ด 0๋ณด๋ค ํฌ๋ฉด ๊ณ์ ๋ฐ๋ณตํฉ๋๋ค.
rep
, repe
, repne
๋ช
๋ น์ด
rep
, repe
, repne
๋ช
๋ น์ด๋ ๋ฌธ์์ด๊ณผ ํจ๊ป ์ฌ์ฉ๋์ด ๋ฐ๋ณต ์์
์ ์ํํฉ๋๋ค. rep
๋ ๋ฌด์กฐ๊ฑด ๋ฐ๋ณต, repe
๋ ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์ฐ ๋ฐ๋ณต, repne
์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ ๋ฐ๋ณต์ ์๋ฏธํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก rep
๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ ํ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค:
rep ๋ช
๋ น์ด ; ๋ฐ๋ณตํ ๋ช
๋ น์ด
๋ค์์ rep
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๋ฐ๋ณตํ๋ ์์ ์
๋๋ค:
mov cx, 5 ; CX ๋ ์ง์คํฐ์ 5๋ฅผ ์ ์ฅ
mov al, 'A' ; ์ถ๋ ฅํ ๋ฌธ์
mov ah, 0eh ; ๋ฌธ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ BIOS ํจ์
rep stosb ; al ๊ฐ์ ๋ฌธ์์ด์ ์ ์ฅํ๊ณ CX๊ฐ ๊ฐ์
์ ์์ ์์ rep stosb
๋ al
๊ฐ์ ๋ฌธ์์ด์ ์ ์ฅํ๋ ๋ช
๋ น์ CX ๋ ์ง์คํฐ์ ๊ฐ ๋งํผ ๋ฐ๋ณตํฉ๋๋ค.
์ด์ ๋ธ๋ฆฌ์ด์์๋ ์ด ์ธ์๋ ๋ค์ํ ์ ์ด๋ฌธ์ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ์ ์ดํ ์ ์์ต๋๋ค. ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ์ ๋ฐ๋ณต๋ฌธ์ ์ ์ ํ ์กฐํฉํ์ฌ ๋ณต์กํ ๋ก์ง์ ์์ฑํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ์ ์ํ๋๋๋ก ์กฐ์ํ ์ ์์ต๋๋ค.
5. ์ด์ ๋ธ๋ฆฌ์ด ์์ ๋ฐ ์ค์ต
์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ์ค์ตํ๊ณ ์์ ๋ฅผ ํตํด ์ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ์ด์ ๋ธ๋ฆฌ์ด์ ์ฌ์ฉ๋ฒ๊ณผ ์๋ฆฌ๋ฅผ ๋ ์ ์ดํดํ ์ ์์ต๋๋ค. ๋ค์์ ์ด์ ๋ธ๋ฆฌ์ด ์์ ๋ฐ ์ค์ต์ ๋ํ ์์ธํ ์ค๋ช ์ ๋๋ค.
์์ 1: ๋ ์์ ํฉ ๊ตฌํ๊ธฐ
๋ค์์ ์ด์
๋ธ๋ฆฌ์ด๋ก ์์ฑ๋ ์์ ์ฝ๋์
๋๋ค. ์ด ์ฝ๋๋ ax
๋ ์ง์คํฐ์ bx
๋ ์ง์คํฐ์ ์ ์ฅ๋ ๋ ์์ ํฉ์ cx
๋ ์ง์คํฐ์ ์ ์ฅํฉ๋๋ค:
mov ax, 10 ; ์ฒซ ๋ฒ์งธ ์์ธ 10์ ax ๋ ์ง์คํฐ์ ์ ์ฅ
mov bx, 20 ; ๋ ๋ฒ์งธ ์์ธ 20์ bx ๋ ์ง์คํฐ์ ์ ์ฅ
add cx, ax, bx ; ax์ bx์ ๊ฐ์ ๋ํด cx์ ์ ์ฅ
์ ์ฝ๋์์ mov
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ax
๋ ์ง์คํฐ์ ์ฒซ ๋ฒ์งธ ์์ธ 10์ ์ ์ฅํ๊ณ , bx
๋ ์ง์คํฐ์ ๋ ๋ฒ์งธ ์์ธ 20์ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ add
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ax
์ bx
๊ฐ์ ๋ํ ํ ๊ฒฐ๊ณผ๋ฅผ cx
๋ ์ง์คํฐ์ ์ ์ฅํฉ๋๋ค. ๋ฐ๋ผ์ cx
๋ ์ง์คํฐ์ ๊ฐ์ 10๊ณผ 20์ ํฉ์ธ 30์ด ๋ฉ๋๋ค.
์์ 2: ๋ฌธ์์ด ์ถ๋ ฅํ๊ธฐ
๋ค์์ ์ด์ ๋ธ๋ฆฌ์ด๋ก ์์ฑ๋ ์์ ์ฝ๋์ ๋๋ค. ์ด ์ฝ๋๋ ๋ฌธ์์ด์ ์ถ๋ ฅํฉ๋๋ค:
mov ah, 9 ; ํ๋ฉด์ ๋ฌธ์์ด ์ถ๋ ฅํ๋ BIOS ํจ์
mov dx, offset message ; ์ถ๋ ฅํ ๋ฌธ์์ด์ ์ฃผ์๋ฅผ dx ๋ ์ง์คํฐ์ ์ ์ฅ
int 21h ; ์ธํฐ๋ฝํธ ํธ์ถํ์ฌ ๋ฌธ์์ด ์ถ๋ ฅ
์ ์ฝ๋์์ mov
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ah
๋ ์ง์คํฐ์ 9๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๋ ํ๋ฉด์ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ BIOS ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ํ ๊ฐ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ mov
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ dx
๋ ์ง์คํฐ์ ์ถ๋ ฅํ ๋ฌธ์์ด์ ์ฃผ์๋ฅผ ์ ์ฅํฉ๋๋ค. offset
์ ๋ฌธ์์ด์ ์์ ์ฃผ์๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก int
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ฝํธ๋ฅผ ํธ์ถํ์ฌ ๋ฌธ์์ด์ ์ถ๋ ฅํฉ๋๋ค.
์ค์ต
์ด์ ์์ ์์ ๋ฅผ ๋ฐํ์ผ๋ก ์ง์ ์ด์ ๋ธ๋ฆฌ์ด ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ณ ์คํํด ๋ด ์๋ค.
์์ 1์ ์ฐธ๊ณ ํ์ฌ ๋ ์์ ์ฐจ ๊ตฌํ๊ธฐ
- ๋ ๋ฒ์งธ ์์์ ์ฒซ ๋ฒ์งธ ์๋ฅผ ๋บ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์ธ์.
- ๋ ์ง์คํฐ ๋ฐ ์ฐ์ฐ์ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด๋ฅผ ์ ์ ํ ํ์ฉํ์ธ์.
์์ 2๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ ์ด ์ํ๋ ๋ฉ์์ง ์ถ๋ ฅํ๊ธฐ
- ์์ ์ด ์ํ๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์ธ์.
mov
๋ช ๋ น์ด์int
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๊ฐ์ ์ค์ ํ๊ณ , ์ํ๋ ๋ฉ์์ง์ ์ฃผ์๋ฅผ ์ ์ฅํ์ธ์.
์์ฑํ ์ฝ๋๋ฅผ ์ด์ ๋ธํ๊ณ ์คํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด์ธ์. ์ด๋ฅผ ํตํด ์ด์ ๋ธ๋ฆฌ์ด์ ์๋ ์๋ฆฌ์ ์ฝ๋ ์์ฑ ๋ฐฉ๋ฒ์ ์ค์ ๋ก ๊ฒฝํํด๋ณผ ์ ์์ต๋๋ค.
๋๊ธ