Chapter 4. Machine Language

Goal

  1. 컴파일링 이후에 고급 언어에서 사용 된 배열의 개념은 사라진다. 따라서, Java or Python이 코드를 기계어로 변환하는 작업을 어셈블러가 완료 했을 때 기계어는 더 이상 배열을 인식하지 못한다. 이 기계어에서 어떻게 배열을 관리할까

  2. 디스플레이 유닛을 이용 하여 입력 하는 방법과 출력 유닛을 이용하여 키보드를 제어 하는 방법을 과제를 통해 학습

Working with registers and memory

🧪
  • @0: 0번째 RAM에 접근
    • D = M: D라는 변수에 현재 접근한 RAM에 담겨 있는 값(M) 저장
  • @1: 1번째 RAM에 접근
    • D = D+M D라는 변수에 저장 된 값과 현재 RAM에 담겨 있는 값을 더한 후 D에 저장
  • @2: 2번째 RAM에 접근
    • M = D: D값을 현재 RAM주소에 저장

물리적 디스플레이 장치가 메모리 맵의 내용으로부터 지속적으로 새로 고침 되는 것이 관건이며, 그 행위는 매 초 마다 일어난다. 디스플레이 유닛에 무언가를 쓰고 싶을 때 메모리 맵의 일부 비트를 조작하는 것 뿐이다. 그리고 다음 새로고침 주기에 메모리에서 변경한 내용이 화면에 반영 된다.

고급 프로그래밍 언어에서 사용 하던 hello world 같은걸 디스플레이 표시 하려면 매우 복잡할 것이다.

Screen memory map

메모리맵은 16비트 값의 시퀀스이고, 8k, 16비트 워드를 사용하고있다. 그리고 메모리맵은 화면에 나타내는 픽셀 값을 담고있다. 여기서, 읽기 쓰기는 항상 16비트를 제어해야 하며, 개별 비트에 접근 할 수 없다.

📝

Display unit을 제어 하려고 한다. 이 때, 4행 55열의 비트를 변경하려면 어떤 주소를 검색하고 어떤 비트를 변경해야 할까?

  • Screen[131], Set 7bits

Summary