我正在编写一个程序,我必须在其中制作自己的 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;
}
}
}