Простая арифметика через регистры в c с использованием собственного ISR
Я пишу программу, в которой я должен сделать свой собственный ISR и выполнить основную арифметику, например, когда я устанавливаю AH в 1, он должен добавить регистры BX и CX. Когда AH установлен на 2, он должен выполнять вычитание в регистрах BX и CX.
Моя проблема в том, что полученный результат не является точным. Мой код ниже:
#include<stdio.h>
#include<conio.h>
#include<fcntl.h>
#include<io.h>
#include<bios.h>
#include<dos.h>
void interrupt (*oldint65) ();
void interrupt newint65();
int result;
void main()
{
clrscr();
oldint65 = getvect(0x65);
setvect(0x65, newint65);
_AH = 1; _BX = 4; _CX = 4;
geninterrupt (0x65);
printf("\nResult of addition is: %d\n", result);
setvect(0x65, oldint65);
getch();
}
void interrupt newint65()
{
switch (_AH){
case 1:
{
result = _BX + _CX;
break;
}
}
}