汇编语言:自定义78h号中断的中断处理例程,并将其安装到内存中

自定义78h号中断的中断处理例程,并将其安装到内存中
;文件名: ptest.asm

assume cs:code
code segment
start:
      ;将自定义的78h号中断的中断例程安装到0:200
      mov ax,cs
      mov ds,ax
      mov ax,0
      mov es,ax
      lea si, do_78h
      mov di,200h
      mov cx,offset do78h_end - offset do_78h
      cld
      rep movsb
      ;设置78h号中断的中断向量表
      mov word ptr es:[78h*4],200h
      mov word ptr es:[78h*4+2],0
      mov ax,4c00h
      int 21h
      ;自定义的78h号中断的中断例程:显示"flying";
 do_78h: jmp short istart
       msg db 'flying!-Piao Guo....'
istart:
       push ds
       push es
       push si
       push di
       push ax
       push cx

       mov ax, cs
       mov ds, ax
       mov si, 202h
       mov ax,0b800h
       mov es,ax
       mov di,160*24
       mov ah, 11001111b ;闪烁红底加亮白字
       mov cx,offset istart - offset msg
    s: mov al,[si]
       mov es:[di],ax    ;字符与属性一起移入
       inc si
       add di,2
       loop s

       pop cx
       pop ax
       pop di
       pop si
       pop es
       pop ds
       iret
do78h_end:nop
code ends
end start

编译、连接及运行过程如下:
这里写图片描述
编程序,触发中断78h
;文件名: pa.asm

assume cs:code, ss:stack
stack segment stack
       db  16 dup (0)
stack ends
code segment
start: 
       int 78h    ;由本条指令触发78h中断
       mov ax,4c00h
       int 21h
code ends
end start

编译、连接、运行程序:
这里写图片描述
上图红色区域本来是一闪一闪的字,截图的时候恰巧字没显示出来…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值