汇编网首页登录博客注册
fpamc的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态

[2012-05-18 22:18] 实验十五

图片载入中
我有一个疑问,就是为什么换成大括号里面的内容后,就不行呢?
我感觉,一样的啊。。。。。。


assume cs:code

stack segment
  db 128 dup (0)
stack ends

code segment

start:mov ax,stack
      mov ss,ax
   mov sp,128
   
   push cs
   pop ds
   
   xor ax,ax
   mov es,ax
   
   mov si,offset int9
   mov di,204h
   mov cx,offset int9end - offset int9
   
   cld
   rep movsb
   ;以上为为复制中断例程做准备。
   
   push es:[9*4]
   push es:[9*4+2]
   pop es:[202h]                              ;{ pop es:[7eh]
   pop es:[200h]                              ;  pop es:[7ch] }
   ;将旧int9入口地址放到安全空间,等待调用
   
   cli
   mov word ptr es:[9*4],204h
   mov word ptr es:[9*4+2],0
   sti
   ;注册新的中断例程到中断向量表
   
   mov ax,4c00h
   int 21h
   
;***************以下为中断例程******************
;功能:按下A键时,当放开则全屏显示A
;PS:利用这个功能可以用来做‘恶搞病毒’或者说‘表白病毒’哈O(∩_∩)O~

int9: push ax
      push es
   push cx
   push di
   ;保存需要用到的寄存器
   
   in al,60h
   pushf                                      ;{ sti
   call dword ptr cs:[200h]                   ;  int 7ch }
   ;模拟int9中断
   
   cmp al,9eh
   jne int9ret
   ;检测A的断码
   
   mov ax,0b800h
   mov es,ax
   xor di,di
   mov cx,2000
   
s  :  mov word ptr es:[di],0741h
   add di,2
   loop s
   ;当放开A则向屏幕输入满屏A
   
int9ret:pop di
      pop cx
   pop es
   pop ax
   ;恢复各寄存器
   
   iret
   ;中断返回
int9end:nop

code ends
end start
评论次数(2)  |  浏览次数(288)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2012-05-18 22:39  ]

这个是9号中断,当有键按下时执行的中断例程,不可以用其它中断来代替的。

[  fpamc   发表于  2012-05-18 22:42  ]

哦~酱紫呀!在14章的时候我的思路就是……中断嵌入中断……

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码