0

私は独自の 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;
        }

    }

}
4

0 に答える 0