2010-07-21 6 views
2

c에서 bios를 사용하여 데이터를 인쇄하는 방법이 있습니까? 나는 어셈블리에서 당신이 int 0x10을 사용할 수 있음을 알고 있지만, C에 상응하는 것들이 있습니까?C에서 BIOS를 사용하여 데이터 표시

+0

어떤 운영 체제에 해당합니까? –

+0

"C에서 BIOS를 사용하여 _ 데이터를 표시 하시겠습니까?" – ninjalj

+0

어셈블리에서 운영체제를 만들 때'int 0x10 '을 사용하여 BIOS를 사용하여 데이터를 표시 할 수 있습니다. C에서 동일한 작업을 수행 할 수있는 방법이 있습니까? – None

답변

1

OS가 이미 실행 중인지 여부에 따라 다릅니다.
예인 경우, 실행중인 OS에 따라 다릅니다. 그러나 일반적으로 C를 사용하는 경우 C stdlib를 사용할 수 있어야합니다. 따라서 printf() 및/또는 stdout을 사용하십시오 ...

사용할 수있는 OS가없는 경우 CPU 모드에 따라 다릅니다.

CPU가 리얼 모드에서 실행 중이면 10h BIOS 인터럽트를 사용하십시오.
C에서조차 할 수 있습니다. 대부분의 C 컴파일러는 인라인 어셈블리를 허용합니다.
예를 들어 GCC의 경우 __asm ​​키워드를 사용하십시오.

32 비트 보호 모드 인 경우 BIOS 인터럽트를 더 이상 사용할 수 없으므로 수동으로 비디오를 관리해야합니다.

이 경우 인쇄 데이터는 비디오 버퍼가있는 메모리 영역에 쓰는 것입니다. 자신이 어떤 비디오 모드에 있는지 알아야하므로 올바른 형식으로 데이터를 쓸 수 있으며 메모리 버퍼의 메모리 주소는 무엇입니까?
그런 경우 간단히 메모리 영역에 대한 char 포인터를 선언하고 문자를 씁니다.

+1

글쎄, 리얼 모드로 다시 전환하고 BIOS 인터럽트를 호출 한 다음 보호 모드로 다시 전환 할 수도 있습니다. 그러나 그것은 약간 농업입니다. – caf

+0

«농업»처음으로 나는 그것을 듣지만, 나는 그 맥락이 주어지면 그것을 사랑한다! :) – Macmade

관련 문제