어셈블러

EDSAC이 컴퓨터 프로그래밍에 끼친 또 다른 큰 공헌이 있다. 바로 어셈블러assembler이다. 기계어로 프로그래밍을 한다는 것은 0과 1로 구성된 코드를 직접 다룬다는 의미이다. 0과 1로만 구성된 코드는 직관적으로 이해하기 어려웠다. 그래서 어셈블리어assembly language가 등장했다. 이는 0과 1의 조합으로 구성된 각각의 코드마다 그 의미를 암시할 수 있는 영어단어를 붙여준 것이다. 예를 들어, ‘1과 2를 더하라’는 의미를 가진 코드를 기계어로 작성하면

00110 00001 00010

와 같을 수 있지만, 어셈블리어로 작성하면

ADD 1, 2

처럼 작성할 수 있다. 훨씬 직관적임을 알 수 있다.

컴퓨터의 프로세서는 기계어만을 이해할 수 있으므로, 어셈블리어로 작성된 프로그램을 그대로 메모리에 로딩해서는 안 된다. 어셈블리어로 작성된 프로그램을 기계어로 변환해주는 프로그램이 있다. 그것을 어셈블러라고 부른다. 휠러는 최초의 어셈블러를 구현했다.

EDSAC에서 최초의 어셈블러는 이니셜 오더initial order라는 일종의 부트로더에 들어 있었다. 이니셜 오더도 일종의 프로그램인데 이것은 테이프가 아니라 컴퓨터의 제어판에 있는 스위치들로 표현되었다. 컴퓨터가 가동되면 먼저 이 스위치들의 값이 메모리의 가장 낮은 영역에 로딩되고, 컴퓨터는 이 로딩된 이니셜 오더를 수행한다. 이니셜 오더는 펀치 테이프에서 프로그램을 읽어서 메모리에 로딩하는데 이때 어셈블러에 의해 프로그램을 기계어로 변환하여 메모리에 로딩한다.​12​

1 2 3 4 5 6 7 8