鱼C论坛

 找回密码
 立即注册
查看: 1019|回复: 4

中断处理程序

[复制链接]
发表于 2022-12-17 13:39:14 | 显示全部楼层 |阅读模式
60鱼币
本帖最后由 Suave 于 2022-12-17 13:42 编辑

编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串:“divide error!”然后返回操作系统


DOS环境下

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-19 09:43:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-19 09:47:40 | 显示全部楼层
DOS环境下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-19 14:06:03 | 显示全部楼层
先自己写,写到哪里不会了再提问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-19 16:46:26 | 显示全部楼层
本帖最后由 jackz007 于 2022-12-20 11:44 编辑
  1. assume cs:code , ds:code
  2. code segment para public 'CODE'
  3.     msg db 'divide error!' , 00h
  4.     lx  dw 0ABCDh
  5. foo proc far
  6.         push cs
  7.         pop ds
  8.         lea si,msg
  9.         mov ax,0b800h
  10.         mov es,ax
  11.         mov di,160*12
  12.         mov bx,80
  13.         sub bx,offset lx
  14.         inc bx
  15.         and bx,0fffeh
  16.         add di,bx
  17.         cld
  18. foo1:   lodsb
  19.         or al,al
  20.         jz foo2
  21.         stosb
  22.         inc di
  23.         jmp short foo1
  24. foo2:   mov ax,4c00h
  25.         int 21h  
  26. foo endp
  27. main proc far
  28.         mov ax,3500h                     ; 获取 0 号中断处理程序入口地址
  29.         int 21h
  30.         cmp word ptr es:[bx-2],0abcdh    ; 判断是否已经驻留,避免重复驻留
  31.         jz main01                        ; 是,跳走
  32.         push cs
  33.         pop ds
  34.         mov dx,offset foo
  35.         mov ax,2500h                     ; 设置 0 号中断向量地址为 ds:dx (cs:ip)
  36.         int 21h
  37.         mov dx,offset main
  38.         add dx,10fh                      ; 驻留空间包括 PSP 的 100h 字节
  39.         mov cl,4
  40.         shr dx,cl                        ; dx = 需要保留的驻留空间小节(10h)数
  41.         mov ax,3100h                     ; 驻留退出,al = 00 是退出状态码
  42.         int 21h
  43. main01: mov ax,4c00h                     ; 正常退出
  44.         int 21h
  45. main endp
  46. code ends
  47. end main
复制代码

        x 爽所谓的教程把世界都搞乱了,居然教别人把中断处理程序的代码覆盖到中断向量表的空间内,而不是让程序自然驻留退出,操作系统设置的功能难道是摆设?如果同时需要编写多个中断处理程序又该怎么办?还有,堆栈只定义十几或几十个字节空间,吝啬程度令人发指,代码开始一定要设置 SS 和 SP 等等,这些统统都是误人子弟!就这么一本蹩脚的教材,居然也能风靡?看来真的是没有人了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 13:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表