문제

방금 어셈블리 언어를 사용하기 시작했고 (새로운 것을 배우는 것 같은 느낌), 내가 겪고있는 모든 튜토리얼이 대답하지 않거나 알기에는 너무 늙었다는 몇 가지 질문을했습니다.

1) 몇 가지 검색을 시도했지만 (올바른 키워드를 모르지만) 화면 해상도를 변경하기위한 업데이트 된 그래픽 모드 목록을 찾을 수 없습니다. 내가 찾은 가장 좋은 것은 다음과 같습니다. 어셈블러 튜토리얼, 그리고 나는 640x480이 최상의 해상도 어셈블리 언어라고 생각하지 않습니다. 내가 사용할 수있는 더 업데이트 된 튜토리얼을 아는 사람이 있습니까?

편집 : 인터럽트 10h는 오래되었으며 640x480 이상을 지원하지 않습니다.

2) 먼저 레지스터로 이동하지 않고 변수에서 다른 변수로 값을 "이동"할 수 있습니까? 예시:

jmp start
  n1     dw 0
  n2     dw 0
  res    dw 0
start:
  mov n1,5
  mov n2,6
  mov res,n1
  add res,n2
...etc...

편집 : 불가능합니다. 레지스터를 사용하지 않고는 메모리에서 메모리로 갈 수 없습니다.

3) 질문 1을 사용하여 사용자가 현재 사용하고있는 그래픽 모드를 감지하여 변경하고 뒤로 변경할 수있는 방법이 있습니까? (나는 그것이 있다고 생각하지만 어떻게 해야할지 잘 모르겠습니다.)

편집 : 그래픽 설정에 대한 OS를 쿼리해야합니다.

도움이 되었습니까?

해결책

질문 #1과 #3의 경우 VESA BIOS 확장. 이것은 90 년대에 인기있는 "Super VGA"모드를 다루는 표준이었습니다.

#2는 일반적으로 대답은 아니오입니다. 메모리를 메모리로 이동할 수 없습니다. 그러나 엄격하게 사실이 아닙니다. DS : SI에서 ES : DI에서 바이트, 단어 또는 dword를 움직이는 Movs (Move String)가 있습니다. 일반적 으로이 명령어는 메모리 블록을 이동하기 위해 Rep Prefix와 함께 사용됩니다. 또한 스택 설정이 있다고 가정하면 밀고 튀어 나와서 레지스터를 클로버하지 않고 메모리로 메모리로 이동할 수 있습니다.

PUSH [mem1]
POP  [mem2]

다른 팁

첫 번째 질문과 관련하여 인터럽트 10은 매우 오래되었으며 640x480의 해상도를 넘어서 사용되지 않았을 것입니다. 소프트웨어 스택의 다른 부분이 이제 사용됩니다. 즉, 현재 화면 해상도를 얻으려면 창문을 심문해야합니다.

이것은 오히려 장점입니다 Windows에서 Assembler를 사용하여 DirectX를 구동하는 방법에 대한 많은 세부 사항이 포함되어 있습니다. DirectX는 요즘 그래픽의 핵심 API 제품군입니다. DOS 시대의 인터럽트를 사용하고 VGA 프레임 버퍼를 직접 프로그래밍하지 않을 것입니다.

인터럽트 10H는 기본적으로 운영 체제 기능 호출입니다 (실제로 BIOS 코드를 실행). 내부적으로 그래픽 카드의 다양한 레지스터뿐만 아니라 비디오 메모리를 읽거나 씁니다. "인터럽트 10h"내에서 어떤 종류의 일이 발생하는지에 대한 아이디어를 얻으려면 확인하십시오. 이것 밖으로.

Windows에서 DOS 프로그램을 실행하면 가상 DOS 머신에서 실행됩니다. Windows는 실제로 그래픽 카드를 터치하지 않지만 가상 카드로 재생할 수 있습니다. 일반적으로 이것은 VGA 화면 모드 (때로는 텍스트 모드 만)까지만 확장됩니다. 즉, 당신이 가진 것은 가상 VGA 카드 (최신 그래픽 카드가 아님)입니다. 이러한 이유로 Windows의 16 비트 어셈블리 언어로 최신 그래픽 카드의 전체 기능을 사용할 수 없습니다.

예, 어셈블리 언어를 사용하면 그래픽 카드가 할 수있는 모든 것을 할 수 있습니다. 그러나 중 하나 일 경우에만 :

  • 귀하의 프로그램은 그래픽 하드웨어 (예 : Windows 또는 Linux 장치 드라이버를 작성하거나 순수한 DOS 또는 자체 커널로 실행중인) 또는 또는 실행중인 경우 또는 또는 또는 실행 중인지에 대한 무제한 액세스 또는 또는 또는 또는
  • 귀하의 프로그램은 적절한 운영 체제 인터페이스를 통과합니다.

여전히 어셈블리 언어에 관심이 있다면 장난감 커널을 작성하는 것이 좋습니다. 이렇게하면 산을 배울 것입니다.

추가 정보를 원한다면 의견을 남겨주세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top