INT Imm

其中:立即数Imm是一个0~0FFH范围内的整数。

指令执行的步骤:

 ◆、把标志寄存器压栈,清除标志位IF和TF;
◆、把代码段寄存器CS的内容压栈,并把中断服务程序入口地址的高字部分送CS;

◆、32位段,压32位IP。



http://www.lfxww.com/2014/shichangshangxun/2014/0412/792685.html
http://www.lfxww.com/2014/shichangshangxun/2014/0412/792850.html
http://www.lfxww.com/2014/shichangshangxun/2014/0412/792851.html
http://www.lfxww.com/2014/shichangshangxun/2014/0412/792915.html
http://www.lfxww.com/2014/shichangshangxun/2014/0412/792894.html
http://www.lhrb.com.cn/qyxw/fhrl/5395326121.html
http://www.yltvb.com/xwbk/redianxinwen/5350750798.html
http://www.yltvb.com/xwbk/redianxinwen/5350633875.html
http://www.yltvb.com/xwbk/redianxinwen/5350648998.html
http://www.zznews.cn/hyzx/jkxx/5378631489.html
http://blog.sina.com.cn/s/blog_ecd6fa280101iiop.html
http://blog.sina.com.cn/s/blog_ecd6fa280101iiot.html
http://www.hangzhou.com.cn/jk/yf/1334171.html


http://www.lfxww.com/2014/shichangshangxun/2014/0412/791249.html
http://www.yltvb.com/xwbk/redianxinwen/5350750798.html
http://www.zznews.cn/hyzx/jkxx/5370119824.html
http://www.zznews.cn/hyzx/jkxx/5372067292.html
http://www.lhrb.com.cn/qyxw/fhrl/5395326121.html
http://www.zznews.cn/hyzx/jkxx/5370225906.html
http://www.lfxww.com/2014/shichangshangxun/2014/0412/790906.html
http://www.yltvb.com/xwbk/redianxinwen/5350633875.html
http://www.lfxww.com/2014/shichangshangxun/2014/0412/790837.html
http://www.yltvb.com/xwbk/redianxinwen/5350648998.html
http://www.zznews.cn/hyzx/jkxx/5370278974.html
http://www.fengone.com/bj/jsqy/2014/0412/497116.html
http://www.zznews.cn/hyzx/jkxx/5378577680.html
http://www.zznews.cn/hyzx/jkxx/5378582350.html
http://www.zznews.cn/hyzx/jkxx/5378587588.html
http://www.zznews.cn/hyzx/jkxx/5378594749.html
http://www.zznews.cn/hyzx/jkxx/5378609821.html
http://www.zznews.cn/hyzx/jkxx/5378616046.html
http://www.zznews.cn/hyzx/jkxx/5378631489.html
http://www.zznews.cn/hyzx/jkxx/5378870915.html
http://www.zznews.cn/hyzx/jkxx/5378636064.html
http://www.zznews.cn/hyzx/jkxx/5378882891.html
http://www.zznews.cn/hyzx/jkxx/5378641301.html
http://www.zznews.cn/hyzx/jkxx/5378646256.html

在该指令执行完后,CPU将转去执行中断服务程序。由于有了指令INT,程序员就能为满足某种特殊的需要,在程序中有目的地安排中断的发生,也就是说,该中断不是随机产生的,而是完全受程序控制的。

一般情况下,一个中断可有很多不同的功能,每个功能都有一个唯一的功能号,所以,在安排中断之前,程序员还要决定需要该中断的哪个功能,中断的功能号都是由AH来确定的。有些中断还需要其它参数,常用中断的功能和参数如附录3所列。

2、溢出指令INTO

当标志位OF为1时,引起中断。该指令的格式如下:

INTO

该指令影响标志位:IF和TF。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用C语言编写的基于IMM滤波算法的GPS定位程序示例: ```c #include <stdio.h> #include <stdlib.h> #include <math.h> #define N 2 // 状态量维度 #define M 1 // 观测量维度 #define L 3 // 模型数 // 状态转移矩阵 double F[L][N][N] = { {{1, 0}, {0, 1}}, // 模型1 {{1, 0.1}, {0, 1}}, // 模型2 {{1, 0.2}, {0, 1}} // 模型3 }; // 过程噪声协方差矩阵 double Q[L][N][N] = { {{0.01, 0}, {0, 0.01}}, // 模型1 {{0.01, 0}, {0, 0.05}}, // 模型2 {{0.01, 0}, {0, 0.1}} // 模型3 }; // 观测矩阵 double H[M][N] = {{1, 0}}; // 观测噪声协方差矩阵 double R[M][M] = {{0.1}}; // 初始状态矩阵 double x0[N] = {0, 0}; // 初始状态协方差矩阵 double P0[N][N] = {{1, 0}, {0, 1}}; // 模型转移概率矩阵 double A[L][L] = {{0.8, 0.1, 0.1}, {0.3, 0.4, 0.3}, {0.1, 0.2, 0.7}}; // 初始化滤波器 void initFilter(double *x, double (*P)[N][N], double (*w)[L], double (*v)[L][M], double (*F)[N][N], double (*Q)[N][N]) { int i, j; for(i = 0; i < L; i++){ w[0][i] = 1.0 / L; for(j = 0; j < M; j++){ v[0][i][j] = 0; } } for(i = 0; i < N; i++){ x[i] = x0[i]; for(j = 0; j < N; j++){ (*P)[i][j] = P0[i][j]; } } for(i = 0; i < L; i++){ for(j = 0; j < N; j++){ (*F)[i][j][j] = F[i][j][j]; (*Q)[i][j][j] = Q[i][j][j]; } } } // IMM滤波算法 void IMMFilter(double z, double *x, double (*P)[N][N], double (*w)[L], double (*v)[L][M], double (*F)[L][N][N], double (*Q)[L][N][N], double (*H)[M][N], double (*R)[M][M], double (*A)[L][L]) { int i, j, k; double c[L], p[L], s, y[M], S[M][M], K[N][M], I[N][N], Pp[L][N][N], xp[L][N], Pxp[L][N][N], vxp[L][M], w1[L], w2[L], w3[L]; // 计算模型预测状态和协方差矩阵 for(i = 0; i < L; i++){ for(j = 0; j < N; j++){ xp[i][j] = 0; for(k = 0; k < N; k++){ xp[i][j] += F[i][j][k] * x[k]; } } for(j = 0; j < N; j++){ for(k = 0; k < N; k++){ Pp[i][j][k] = 0; for(int l = 0; l < N; l++){ Pp[i][j][k] += F[i][j][l] * (*P)[l][k] * F[i][k][l]; } Pp[i][j][k] += Q[i][j][k]; } } } // 计算模型预测观测量和协方差矩阵 for(i = 0; i < L; i++){ for(j = 0; j < M; j++){ vxp[i][j] = 0; for(k = 0; k < N; k++){ vxp[i][j] += (*H)[j][k] * xp[i][k]; } v[i][j] = z - vxp[i][j]; } for(j = 0; j < M; j++){ for(k = 0; k < M; k++){ S[j][k] = 0; for(int l = 0; l < N; l++){ S[j][k] += (*H)[j][l] * Pp[i][l][k] * (*H)[k][l]; } S[j][k] += (*R)[j][k]; } } } // 计算模型预测权重和后验权重 s = 0; for(i = 0; i < L; i++){ p[i] = 0; for(j = 0; j < M; j++){ y[j] = 0; for(k = 0; k < N; k++){ y[j] += (*H)[j][k] * xp[i][k]; } p[i] += exp(-0.5 * v[i][j] * v[i][j] / S[j][j]) / sqrt(2 * M_PI * S[j][j]); } c[i] = w[0][i] * p[i]; s += c[i]; } for(i = 0; i < L; i++){ w1[i] = c[i] / s; w2[i] = 0; for(j = 0; j < L; j++){ w2[i] += A[j][i] * w1[j]; } w3[i] = w1[i] / w2[i]; } // 计算模型加权后验状态和协方差矩阵 for(i = 0; i < N; i++){ x[i] = 0; for(j = 0; j < L; j++){ x[i] += w3[j] * xp[j][i]; } } for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ (*P)[i][j] = 0; for(int k = 0; k < L; k++){ (*P)[i][j] += w3[k] * Pp[k][i][j] + w3[k] * (xp[k][i] - x[i]) * (xp[k][j] - x[j]); } (*P)[i][j] /= L; } } // 更新模型权重 for(i = 0; i < L; i++){ w[0][i] = w1[i] * w2[i]; } } int main() { double z = 10; // 观测值 double x[N], P[N][N], w[L], v[L][M]; int i; // 初始化滤波器 initFilter(x, &P, &w, &v, &F, &Q); // 进行IMM滤波 for(i = 0; i < 100; i++){ IMMFilter(z, x, &P, &w, &v, &F, &Q, &H, &R, &A); } // 打印结果 printf("x = [%f, %f]\n", x[0], x[1]); printf("P = [[%f, %f], [%f, %f]]\n", P[0][0], P[0][1], P[1][0], P[1][1]); return 0; } ``` 在上面的代码中,我们使用了三个模型来处理GPS测量数据,并通过自适应地选择最优的模型来提高定位的准确度。同时,我们使用了IMM滤波算法来对测量数据进行处理,从而得到最终的位置估计值。需要注意的是,上面的代码只是一个简单的示例,实际应用中可能需要根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值