. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于实验十五的疑问,为什么我的这个程序不行?  [待解决] 回复[ 3次 ]   点击[ 383次 ]  
panna
[帖 主]   [ 发表时间:2013-01-27 15:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-10 18:38
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
      
      mov ax,0
      mov es,ax
      
      mov si,offset newint9
      mov di,204h
      mov cx,offset endnewint9-newint9
      cld
      rep movsb
      
      push es:[9*4]
      pop es:200h
      push es:[9*4+2]
      pop es:202h
      
      cli
      mov word ptr es:[4*9],204h
      mov word ptr es:[4*9+2],0
      sti
   
      mov ax,4c00h
      int 21h

newint9:push dx
        push es
        push bx 
        push cx
       
       
   in al,60h
      
      pushf
      call dword ptr cs:[200h]
 
 s:   in al,60h
      cmp al,9eh  
      jne s
      ;关键是这个标号s.
      mov ax,0b800h
      mov es,ax
      
      xor bx,bx
      mov cx,2000
      
back: mov es:[bx],'A'
      add bx,2
      loop back


over: pop cx
      pop bx
      pop es
      pop dx
      iret      
      
      




endnewint9:nop



ends segment

end start


根据我的理解是这样的:输入键盘——产生扫描码(通码)——发送到60H端口——如果IF=1则引发INT 9——INT判断是打印到屏幕呀、或者是无效操作——IRET结束。
第一个问题:如果是断码会怎么样?求过程。

按照正确答案断码也会传送到60H端口,那么为什么一定要判断输入的是不是A的通码?我只要我要的9E(即a的断码)就可以了!问题如上,按我的说的应该没问题吧?但是为什么我的程序不可以呢?望高手解答,谢谢你们!
panna
[第1楼]   [ 回复时间:2013-01-27 15:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-10 18:38
这么发一下,问题是想通了。应该是进入这个INT 9的时候,IF=0。而我的这个JMP S,却一直在循环(即没有走出来),因为IF=0,不接受任何的键盘输入,所以也不会发送东西到60H端口。综上所述CPU一直判断的是我第一次按键的通码。所以在某个地方加个sti就可以了,试一下。嘿嘿。
panna
[第2楼]   [ 回复时间:2013-01-27 15:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-10 18:38
测试通过,s标号后加STI即可。OK,谢谢大家的关注。
panna
[第3楼]   [ 回复时间:2013-01-27 15:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-10 18:38
感觉整本书讲的东西越来越不细腻了。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved