어셈블러를 두 개의 패스로 구성하는 이유는 기호를 프로그램 내에서 정의하고 사용하는 방식을 효율적으로 처리하기 위해서입니다. 첫 번째 패스에서는 모든 기호를 먼저 정의하고, 두 번째 패스에서는 이 기호들을 실제로 사용하여 기계어로 변환합니다. 이렇게 함으로써 기호가 사용되는 위치에 대한 정보가 부족한 상태에서의 오류를 방지하고, 전체 코드를 유기적으로 처리할 수 있습니다. 따라서 한 개의 패스만을 사용할 경우 기호를 모두 정의한 뒤에야 해당 기호를 사용할 수 있기 때문에 두 개의 패스를 사용하는 것이 적절합니다.