Простая арифметика через регистры в 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;
        }

    }

}

0 ответов

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