. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验十五完成的郁闷!  [待解决] 回复[ 2次 ]   点击[ 782次 ]  
zhenglxd
[帖 主]   [ 发表时间:2009-06-16 11:11 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
;pdf 295 试验15 安装int9中断效果为放开a键时满屏显示A
;TMD完成的郁闷!自己独立完成的,也就1个多小时,本来代码写完就直接实现,谁知道把cld和std搞翻反了,好好的心情就这么没了!
assume cs:code

code segment
start :

       mov ax,0
       mov es,ax

       push es:[9*4]
       pop  es:[200H]
       push es:[9*4+2]
       pop  es:[202H]
;复制原int9中断程序入口地址 到 0:200H dword单元
             
       cli
       mov word ptr es:[9*4],204H
       mov word ptr es:[9*4+2],0
       sti
;设置新int9中断程序入口地址为0:204H
       
       mov cx,offset int9end- offset int9start
       mov ax,cs
       mov ds,ax
       mov si,offset int9start
       mov di,204H   ;(es=0)
       cld
       rep movsb
;进行安装

       mov ax,4c00h
       int 21h


int9start: 
       pushf
       call dword ptr cs:[200h] 
;调用原int9中断例程

       push ax
       push cx
       push es
       push di

       in al,60H
       cmp al,1EH+80H
       jne return

       mov cx,2000
       mov ax,0b800H
       mov es,ax
       mov di,0
show_A:mov byte ptr es:[di],'A'
       add di,2 
       loop show_A

return:pop di
       pop es
       pop cx
       pop ax
       iret

int9end:nop



code ends
end start
crazyman
[第1楼]   [ 回复时间:2009-06-16 11:48 ]   [引用]   [回复]   [ top ] 
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26
看了楼主的博客了,我很赞赏楼主独立完成的劲头。郁闷不怕,关键是从困难中得到历练。
gift925
[第2楼]   [ 回复时间:2009-09-04 13:10 ]   [引用]   [回复]   [ top ] 
荣誉值:22
信誉值:12
注册日期:2009-08-28 00:17
从来都是独立完成的人飘过。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved