. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于调用int9原中断例程的疑问  [待解决] 回复[ 3次 ]   点击[ 488次 ]  
lishenycy
[帖 主]   [ 发表时间:2012-10-15 11:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-09-30 22:11
在书15.4 编写int9中断例程中的实验调用了int9原例程,但看不明白到底原例程做了什么?是使新int9中断例程中的in al,60h起作用吗?坐等高手解答
q3889
[第1楼]   [ 回复时间:2012-11-07 16:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-10-30 12:52
是啊,新编写的INT9中断例程只是在原中断例程上进行一些附加工作,到底原例程做了什么,望高手详解下
aks20005
[第2楼]   [ 回复时间:2012-11-20 00:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-11-20 00:37
发一个 键盘驱动吧 你们自己看看吧。

; this program just a little keyboard driver feeler
assume cs:extra
stack segment stack
        db 40H dup(?)
        
stack ends


extra segment
start:
                mov ax,0H
                mov ds,ax
                mov word ptr ds:[24H],offset start1
                mov word ptr ds:[26H],seg code
                mov ax,4c00H
                int 21H
                
                
                
extra ends



code segment
assume cs:code,ds:code
                
                keyControl_offset dw 0H
                keycontrol_segment dw seg key
                
; assignment  the varible  of  segment address
start1:                
                
                in al,60H
                or al,0
                jns keyupcode
                call  clr_IRQ1
                ;mov ax,4c00H
                ;int 21H
                jmp $
;judge the keyup code


keyupcode:        
                mov dx,seg code
                mov ds,dx
                mov cl,3H
                mul cl
                mov [keyControl_offset],ax
                call dword ptr keyControl_offset
                mov dl,al
                mov ah,02H
                int 21H
                call  clr_IRQ1
                ;mov ax,4c00H
                ;int 21H



;//////////////////////////////////
;just clear the hard interrupt
;//////////////////////////////////
 clr_IRQ1 proc near

                  in al,20H
                  or al,00100000b
                  out 20H,al
                  sti
                  ret
 clr_IRQ1 endp



code ends

key segment
  db 3 dup(?)
 ;ESC key 01H
                mov al,'.'
                retf
  
 ;1 key 02H
                mov al,'1'
                retf
 ;2 key 03H        
                mov al,'2'
                retf
 ;3 key 04H        
                mov al,'3'
                retf
 ;4 key 05H        
                mov al,'4'
                retf
 ;5 key 06H
                mov al,'5' 
                retf
 ;6 key 07H
                mov al,'6' 
                retf

 ;7 key 08H
                mov al,'7' 
                retf
 ;8 key 09H
                mov al,'8' 
                retf
 ;9 key 0AH
                mov al,'9' 
                retf
 ;0 key 0BH
                mov al,'0' 
                retf
 ;- key 0cH
                mov al,'-' 
                retf
 ;= key 0dH
                mov al,'=' 
                retf
 ;backspace key 0EH
                mov al,'.' 
                retf
 ;tab key 0FH
                mov al,'.' 
                retf
 ;q key 10H
                mov al,'q' 
                retf
 ;w key 11H
                mov al,'w' 
                retf
 ;e key 12H
                mov al,'e' 
                retf
 ;r key 13H
                mov al,'r' 
                retf
 ;t key 14H
                mov al,'t' 
                retf
 ;y key 15H
                mov al,'y' 
                retf
 ;u key 16H
                mov al,'u' 
                retf
 ;i key 17H
                mov al,'i' 
                retf
 ;o key 18H
                mov al,'o' 
                retf
 ;p key 19H
                mov al,'p' 
                retf
 ;[ key 1AH
                mov al,'[' 
                retf
 ;] key 1BH
                mov al,']' 
                retf
 ;enter key 1CH
                mov al,'.' 
                retf
 ;ctrl key 1DH
                mov al,'.' 
                retf

  ;A key 1EH
                mov al,'a'
                retf
                
  ;s key 1FH
                mov al,'s'
                retf

  ;d key 20H
                mov al,'d'
                retf
  ;f key 21H
                mov al,'f'
                retf
  ;g key 22H
                mov al,'g'
                retf
  ;h key 23H
                mov al,'h'
                retf
  ;j key 24H
                mov al,'j'
                retf
  ;k key 25H
                mov al,'k'
                retf
  ;l key 26H
                mov al,'l'
                retf
  ;; key 27H
                mov al,';'
                retf
  ;, key 28H
                mov al,','
                retf
 ;other key 29H
                mov al,'.'
                retf
;l_shift key 2AH
                mov al,'.'
                retf
  ;\ key 2BH
                mov al,'\'
                retf
  ;Z key 2CH
                mov al,'z'
                retf
  ;X key 2DH
                mov al,'x'
                retf
  ;C key 2EH
                mov al,'c'
                retf
  ;V key 2FH
                mov al,'v'
                retf
  ;B key 30H
                mov al,'b'
                retf
  ;n key 31H
                mov al,'n'
                retf
  ;M key 32H
                mov al,'m'
                retf
  ;, key 33H
                mov al,','
                retf
  ;. key 34H
                mov al,'.'
                retf
  ;/ key 35H
                mov al,'/'
                retf
;r_shift key 36H
                mov al,'s'
                retf
  ;prtse key 37H
                mov al,'.'
                retf
  ;alt key 38H
                mov al,'.'
                retf
  ;space key 39H
                mov al,' '
                retf
  ;s key 1FH
                mov al,'s'
                retf
  ;s key 1FH
                mov al,'s'
                retf
  ;s key 1FH
                mov al,'s'
                retf
  ;s key 1FH
                mov al,'s'
                retf
  ;s key 1FH
                mov al,'s'
                retf
  ;s key 1FH
                mov al,'s'
                retf
  ;s key 1FH
                mov al,'s'
                retf

key ends


end start
bianzhizhe
[第3楼]   [ 回复时间:2013-01-24 20:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-24 20:11
你问的那个问题是多余的,比如我们用debug 跟踪调试 按t进行下一步的跟踪 按t的时候就调用了本身的int9 而debug程序和int9 之间做了些东西。int9它本身处理的东西相当的繁琐,你不用去理会,打个比方  你家有一个马桶,按下冲水开关水就流到了下水道 你想加点东西,就可以大便一次,然后按下冲水开关,就会有水连你的粪便一起冲下去,而你非要问明白,东西冲到哪里去了?有必要知道吗?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved