博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
int指令
阅读量:6088 次
发布时间:2019-06-20

本文共 2453 字,大约阅读时间需要 8 分钟。

int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。

CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。

1)取中断类型码n;

2)标志寄存器入栈 ,IF=0, TF=0;

3) CS,IP入栈;

4)(IP)=(n*4), (CS)=(n*4+2)。

int指令的最终功能和call指令相似,都是调用一段程序。

 

问题一:编写、安装中断7ch的中断例程。

功能:求一word型数据的平方。

参数:(ax)=要计算的数据。

返回值: dx、ax中存放结果的高16位和低16位。

应用举例:求2*3456

assume cs:codecode segmentstart:                 mov ax, 3456                 int 7ch                 add ax, ax                 adc dx, dx                     mov ax, 4c00h                 int 21hcode endsend start

我们需要做一下3部分工作。

1)编写实现求平方功能的程序

2) 安装程序,将其安装在0:200处

3)设置中断向量表,将程序的入口地址保存在7ch表项中,使其成为中断7ch的中断例程。

安装程序如下。

assume cs:codecode segmentstart:                    mov ax, cs                    mov ds, ax                    mov si, offset  sqr                    mov ax, 0                    mov es, ax                    mov di, 200h                    mov cx, offset sqrend-offset sqr                    cld                    rep  movsb                    mov ax, 0                    mov es, ax                    mov word ptr es:[7ch*4], 200h                    mov word ptr es:[7ch*4+2], 0                    mov ax, 4c00h                    int 21hsqr:                     mul ax                     iretsqrend:                    nopcode endsend start

 

问题二:编写、安装中断7ch的中断例程。

功能:将一个全是字母,以0结尾的字符串,转化成大写。

参数: ds:si指向字符串的首地址

应用举例:将data段中的字符串转化成大写。

assume cs:codedata segment         db  'conversation',0data endscode segmentstart:               mov ax, data               mov ds, ax                mov si, 0                int 7ch               mov ax, 4c00h               int 21hcode endsend start安装程序如下。assume cs:codecode segmentstart:              mov ax, cs              mov ds, ax              mov si, offset  capital              mov ax, 0              mov es, ax              mov di, 200h              mov cx, offset capitalend-offset capital              cld              rep movsb              mov ax, 0              mov es, ax              mov word ptr es:[7ch*4], 200h              mov word ptr es:[7ch*4+2], 0              mov ax, 4c00h              int 21hcapital:               push cx               push sichange:                mov cl, [si]                mov ch, 0                jcxz  ok                and byte ptr [si], 11011111b                inc si                jmp short changeok:                pop si                pop cx                iretcapitalend:                  nopcode endsend start

 

转载于:https://www.cnblogs.com/gkp307/p/9947198.html

你可能感兴趣的文章
JavaScript/数据类型/function/closure闭包
查看>>
30个免费资源:涵盖机器学习、深度学习、NLP及自动驾驶
查看>>
读zent源码库之Dialog组件实现
查看>>
express中间层搭建前端项目3
查看>>
【刷算法】我知道的所有类似斐波那契数列的问题
查看>>
centos下安装JAVA开发工具(3)------Mysql
查看>>
JS 实现文字滚动显示
查看>>
php实现依赖注入(DI)和控制反转(IOC)
查看>>
如何搭建高质量、高效率的前端工程体系--页面结构继承
查看>>
白山云科技 CTO 童剑:空降后,如何有技术又有艺术地破局?
查看>>
Google发布App Engine第二代运行时,提供Python 3.7和PHP 7.2支持
查看>>
通过XAML Islands使Windows桌面应用程序现代化
查看>>
Mozilla开发全新的公开网络API WebXR 来实现增强现实
查看>>
IOS 10适配https 包含对于一些http的一些兼容配置
查看>>
【人脸识别终结者】多伦多大学反人脸识别,身份欺骗成功率达99.5%
查看>>
服务短信的退订与恢复方法
查看>>
2016年中国软件行业基准数据正式发布
查看>>
Eclipse安装Spring工具套件
查看>>
感谢区块链,分权和数据安全 - 是未来
查看>>
用无人机撑伞?日本人脑洞真大
查看>>