64 비트 워드 주소 지정이 가능한 컴퓨터가 있고 이진 이미지 비트 맵 (아래와 같은)으로 저장된 5x7 문자를 메모리 매핑 된 디스플레이에 출력하도록 프로그래밍하려고한다고 가정합니다.
문자 당 5 x 7 = 35 픽셀이므로 35 비트를 사용하여 한 단어로 문자를 저장할 수 있습니다. 워드의 왼쪽에서 시작하는 최하위 비트와 이미지의 각 픽셀이 위에 표시된 것처럼 n 번째 비트로 표시되면 위의 "3"숫자는 다음과 같이 메모리에 저장됩니다. 01110100010000100110000011000101110,이어서 29 미사용 비트는 0으로 설정됩니다.
구식 / 현대식 컴퓨터에서 캐릭터가 저장 / 저장되는 방법입니까? 아니면 픽셀 당 단일 바이트 / 워드를 사용합니까?
이들이 이런 방식으로 저장되면, 어셈블리 / 머신 코드의 루틴 (컴퓨터의 명령어 세트 아키텍처의 비트, 산술 및 데이터 전송 작업과 같은 기본 명령어 사용)은이 데이터를 이미지로 변환하는 데 사용됩니다. 디스플레이가 어떻게 생겼습니까? 다음과 같은 것입니까?
- 특정 레지스터에서 업데이트 할 현재 픽셀의 x 및 y 디스플레이 좌표를 저장합니다.
- 선택한 두 RGB 값 (이 경우 녹색은 0,255,0, 검은 색은 0,0,0)을 두 개의 다른 레지스터에 저장하십시오.
- 렌더링되는 이미지의 현재 행과 열을 추적하기 위해 두 개의 추가 레지스터가 카운터를 5와 7로 초기화하도록합니다.
- 열 레지스터가 0이 아닌지 테스트합니다. 그렇지 않은 경우 비트 맵의 LSB가 1로 설정되어 있는지 테스트 한 다음 결과에 따라 x 및 y 좌표 레지스터를 사용하여 각 RGB 값 레지스터를 AND로 이동 한 다음 결과 디스플레이 출력 레지스터로.
- 행 카운터 레지스터를 1 씩 줄이고 0인지 확인하십시오. 그렇다면 5로 다시 설정하고 y 좌표를 1 씩 늘리고 열 카운터를 1 씩 줄이십시오.
- 비트 맵을 1 비트 왼쪽으로 유지하는 레지스터를 이동합니다.
- JMP to instruction 4.
더 간단하고 효율적인 방법이 있습니까? 하나의 작은 텍스트 문자를 렌더링하는 것만 큼 간단하지만 많은 작업이 필요하며 약 200 개의 CPU 사이클이 소요됩니다.
마지막으로, 이미지를 처음부터 표시하기위한 머신 레벨 코드에 관한 좋은 책이나 자료가 있습니까?이 특정 주제에 대해 글로시하거나 코드가 고급 언어로 작성되어 있거나 매크로를 사용하는 어셈블러. 모두 "속임수"이며 기본적으로 가장 낮은 수준에서 무슨 일이 일어나고 있는지 설명하지 않습니다.