See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
어셈블리어 - 위키백과

어셈블리어

위키백과 ― 우리 모두의 백과사전.

어셈블리어(assembly language)는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍저급언어이다.

기계어는 실제로 컴퓨터 CPU가 읽어서 실행할 수 있는 0과 1로 이루어진 명령어의 조합이다. 이러한 각 명령어에 대해 사람이 알아보기 쉬운 니모닉 기호(mnemonic symbol)를 정해 사람이 좀 더 쉽게 컴퓨터의 행동을 제어할 수 있도록 한 것이 어셈블리 언어이다.

예를 들어,

10110000 01100001

는 x86 계열 CPU의 기계어 명령이고, 이것을 어셈블리어로 옮겨쓰면 다음과 같다.

mov  al, 061h

명령어 mov는 영어 move를 변형한 니모닉이며, al은 CPU안에 있는 변수를 저장하는 레지스터의 하나이다. 그리고, 061h는 16진수 61 (즉 십진수 97, 이진수 01100001)이다. 이 한 줄의 뜻은 16진수 61을 al레지스터에 넣으라는 뜻이며, 1과 0의 반복인 기계어보다 사람이 혼동없이 이해하기 한결 쉽다. 어셈블리어는 이러한 문장들로 구성된다.

어셈블리어를 기계어로 번역하는 것을 “어셈블러”(assembler)이며, 거꾸로 기계어를 어셈블리어로 바꾸는 것은 “디스어셈블러”(disassembler)이다. 고급언어와는 달리 어셈블리어는 간단한 문장에 대해 기계어와 일대일 대응 관계가 있지만, 자주 쓰이는 몇 명령은 둘 이상의 기계어 명령을 묶어 하나의 어셈블리 명령어에 대응시키기도 한다.

컴퓨터 아키텍처마다 사용하는 기계어는 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 컴퓨터 CPU마다 지원하는 오퍼레이션의 타입과 개수는 제각각이며, 레지스터의 크기과 개수, 저장된 데이터 형의 표현도 각기 다르다. 모든 범용 컴퓨터는 기본적으로 동일한 기능을 수행하지만, 기능을 어떤 과정을 거쳐 수행할 지는 다를 수 있으며, 이런 차이는 어셈블리어에 반영되게 된다.

게다가 단일 명령 집합에 대해 여러 니모닉과 신택스가 대응될 수 있다. 그런 경우에는 제조사가 만든 문서에서 쓰이는 것이 가장 자주 쓰이게 된다.

[편집] 기계어 명령

어셈블리어 명령은 고급언어의 그것과 달리 보통 매우 간단하다. 메모리를 참조하는 명령은 필요한 메모리 주소를 어떻게 계산할 지를 결정하기 위한 어드레싱 모드를 갖게 된다. 좀 더 복잡한 동작은 이러한 단순한 동작을 이어서 수행될 수 있다. 대부분의 명령어 집합에서 지원하는 명령어 중 몇은 다음과 같다.:

  • 옮기기
    • 특정 레지스터에 상수값을 넣는다.
    • 특정 메모리 주소의 데이터를 레지스터에, 또는 레지스터의 값을 메모리 주소에 넣는다.
    • 하드웨어에서 데이터를 읽거나, 하드웨어에 데이터를 쓴다.
  • 계산
    • 두 레지스터의 값을 이용해 더하기, 빼기, 곱하기, 나누기 연산을 수행하고 결과를 한 레지스터에 넣는다.
    • 비트 연산(and/or, not)을 수행한다.
    • 두 레지스터의 값을 비교한다. (예를 들어, 한쪽이 더 작은지 또는 둘의 값이 같은지)
  • 프로그램 흐름 제어
    • 프로그램의 다른 위치로 점프하여 그곳의 명령을 수행한다.
    • 특정 조건이 만족하면, 다른 위치로 점프한다.
    • 다른 위치로 점프하지만, 다음 명령의 위치를 되돌아올 위치로 기억한다.

[편집] 바깥 고리


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -