int n引发的中断应用——编写中断7CH的中断例程

  • int n指令的最终功能和call指令类似,调用一段程序
  • 系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用
  • 编程时用int指令调用子程序
  • 子程序即中断处理程序,简称中断例程
  • 中断7CH的中断例程
  • 按照中断的运行机制的要求编写
  • 参考中断0的中断例程
    在这里插入图片描述

  • 功能:求一个word型数据的平方
  • 参数:(ax) = 要计算的数据
  • 返回值:dx,ax中存放结果的高、低16位
  • 例: 2 × 345 6 2 2\times3456^2 2×34562

  1. 求平方功能的程序
sqr:mul ax
    iret
sqrend:nop
  1. 安装程序,安装在0:200处
start:mov ax,cs
      mov ds,ax
      lea si,sqr
      mov ax,0
      mov es,ax
      mov di,200h
      mov cx,offset sqrend - offset sqr
      cld
      rep movsb
  1. 设置中断向量表,将程序入口对着保存在7CH表项中,使其成为中断7CH的中断例程
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0h
mov ax,4ch
int 21h
  • 完整版程序
assume cs:code
code segment
start:mov ax,cs
      mov ds,ax
      lea si,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],0h
      mov ah,4ch
      int 21h

  sqr:mul ax
      iret
sqrend:nop

code ends
end start
  • 再用masm for Windows就不行了,一运行完就关闭,得换命令行的编辑环境
    在这里插入图片描述
    在这里插入图片描述
  • 编译另外一个程序
    在这里插入图片描述
  • 太久没用命令行了,犯了一个低级错误
    在这里插入图片描述
  • 不得不说,DOS环境下十进制转十六进制真的快
    在这里插入图片描述
  • 成功调用
    在这里插入图片描述
  • 结果如下
    在这里插入图片描述
  • 测试程序是另外存为my.exe
assume cs:code
code segment
start:mov ax,3456
      int 7ch
      add ax,ax
      adc dx,dx
      mov ah,4ch
      int 21h
code ends
end start

  • 执行int n
pushf
push CS
push IP
  • 执行iret
pop IP
pop CS
popf
  • 入栈出栈一一对应,必须加IRET
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值