2016-12-31 3 views
4

학습을 위해 간단한 BIOS 리셋 프로그램을 개발하고있었습니다. 그래서 필자는 교장 파일을 가지고 있습니다. 그것은 Reseta.com이라고 불리는 메뉴입니다. 예, 스택이없는 작은 모델입니다. 그리고 나는 A.com을 가지고 있는데, 리셋 할 코드는 어디에 있는가? 그래서 메인 프로그램 인 Reseta.com에서 A.com을 실행해야하고, A.com은 DOS의 디버그에서 작성되었고, 네, 저는 Windows 98에 있습니다. 그러나 programa는 MS-DOS에서 실행됩니다. 나는 4Bh, 3DH와 같은 인터럽트 21을 시도했지만 아직 성공하지 못했습니다. 가장 간단한 방법은 무엇입니까? 그냥 "A.com"파일을 호출하면 인터럽트 21에서 서비스 0으로 DOS로 돌아갑니다. 이해하기 쉽게하기 위해 WinExec()와 같은 것을 찾고있었습니다. 물론 WinAPI에서는 Assembly 16-bit에서 MS-DOS가 가능합니다.어셈블리 16 비트로 다른 파일을 실행하는 방법

PS : 당신이 스스로 할 수있을 거 야 ... 당신은 소리

+2

가능한 중복 http://stackoverflow.com/questions/10006072/loading-programs-to-ram-and-executing-them-nasm-16b) –

+0

NASM을 사용하지 않고 TASM을 사용하고 있으며이 링크에서이 예제를 사용하고 있습니다. does not works for ... ... ( – user3587527

+2

코드를 보여주세요. – fuz

답변

2

를 코드를 컴파일하기 위해 TASM 및 TLINK/t를 사용하고, 그래서 난 그냥 당신에게 힌트를 줄 것이다.

.com은 바이트 코드를 크게 상회하지 않습니다. RAM에 파일을로드 한 다음 그 파일로 바로 이동할 수 있습니다. 코드가 4 바이트 경계에서 시작하는지 확인하십시오.

소프트 재부팅으로 충분하면 프로그램에서 int 19h을 호출하면 부트 로더로 점프하고 DOS를 다시로드 할 수 있습니다.

는 (. 또한, 여기 Ralf Brown's Interrupt List의이 진정한 고전 그것은 어떤 점에서 유용하게 사용할 수 있습니다주의 할 :...이 거대한입니다) ([RAM 그들에게 NASM의 16B를 실행하는로드 프로그램]의

관련 문제