Как выполнить другой файл в сборке 16 бит

Я разрабатывал простой ресетер BIOS, просто для обучения. Итак, у меня есть основной файл, это Menu, называемое Reseta.com, да, это маленькая модель без стека. И у меня есть A.com, где находится код для сброса, поэтому мне нужно запустить A.com с моей основной программой Reseta.com, A.com был написан в Debug of DOS, и да, я в Windows 98, но программа будет работать на MS-DOS. Я пробовал с прерыванием 21, как сервис 4Bh, 3DH, но пока не добился успеха. Как проще всего это сделать? Просто вызовите файл "A.com", он возвращается в DOS с сервисом 0 от прерывания 21. Спасибо, чтобы было проще понять, я искал что-то вроде WinExec(); в WinAPI, но, конечно, в сборке 16-битных MS-DOS.

PS: я использую TASM и TLINK /t для компиляции кода...

1 ответ

Решение

Похоже, ты сможешь сделать это сам, поэтому я просто дам тебе подсказки.

.com не намного больше, чем байт-код. Вы можете просто загрузить файл в оперативную память и затем перейти к нему. Убедитесь, что код начинается с 4-байтовой границы.

В качестве альтернативы, если мягкой перезагрузки достаточно, вы можете просто позвонить int 19h в вашей программе, которая переходит на загрузчик и перезагружает DOS.

(также вот список прерываний Ральфа Брауна. Это настоящая классика. В какой-то момент он может пригодиться. Будьте осторожны: он гигантский.)

Другие вопросы по тегам