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