#c #assembly #x86-16
#c #собрание #x86-16
Вопрос:
Я пытаюсь понять концепцию функции int86. Я хочу распечатать строки, которые он прочитал из файла на консоли, и отобразить сообщение об ошибке печати (если таковое имеется) при открытии или перемещении указателя файла (после проверки переменной ФЛАГА, определенной в объединении ПРАВИЛ).
#includelt;STDIO.Hgt; #includelt;FCNTL.Hgt; #includelt;IO.Hgt; #includelt;BIOS.Hgt; #includelt;DOS.Hgt; unsigned int handle; void main() { union REGS regs; unsigned long int size; handle = open("C:filed", O_RDONLY); regs.x.bx = handle; regs.h.ah = 0x42; regs.h.al = 0x02; regs.x.cx = 0; regs.x.dx = 0; int86(0x21, amp;regs, amp;regs); printf (regs); getch(); }
Комментарии:
1. Вы можете отправить (
$
-завершенную) строкуSTDOUT
с0x21
функцией прерывания0x09
(если у вас есть MS-DOS). Но если вы пишете на C и для выполнения этих задач существуют функции библиотеки C, используйте их. Если есть задания, которые библиотека не охватывает, используйте системные вызовы. Но если вы практикуетесь в ассемблере, используйте ассемблер, а не C.2. Обратите внимание, что
printf (regs);
это вообще не сработает.3. @WeatherVane: Без сомнения, но он понятия не имеет, как это сделать. Если бы я на самом деле кодировал в сборке, я бы смог это сделать, но, похоже, я не могу вспомнить, как с этим справиться в такой структуре правил.
4. @Joshua это Борланд Турбо С ?
5. @WeatherVane: Я верю, что это так.