. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->端口
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  in 指令的问题`  [已解决] 回复[ 2次 ]   点击[ 389次 ]  
as555as
[帖 主]   [ 发表时间:2009-10-15 13:56 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:8
注册日期:2009-09-27 23:31
这段完整的程序在cmd-dos下运行第一遍的时候可以用输入Q的方式退出程序,可是接着在运行的时候就直接退出,我检查过 in al,60h里的al值 在运行到这里没有任何输入的情况下,al中的值就为90h了 看不到等待输入的效果,当进入另一个程序或者debug的时候,回来再运行它就好使了` 请问这是什么原因!
assume cs:code
data segment
        db 9,8,7,4,2,0
data ends
        
code segment
start:
        mov dx,data
        mov ds,dx
        mov bx,0

        mov dx,0b800h
        mov es,dx
        mov di,12*160+30*2
        
        mov cx,4
        mov si,6
s:
        mov ax,[bx]

        out 70h,al
        in al,71h
        call show_time
        
        inc bx
        dec si
        cmp si,0
        jne s

        mov ax,0
        in al,60h
        cmp al,90h ;Q键的扫描码
        je quit
        jmp start
        
quit:                
        mov ax,4c00h
        int 21h
show_time:
        mov ah,al
        shr ah,cl
        and al,15
        
        add ah,30h
        add al,30h
        
        mov es:[di],ah
        add di,2
        mov es:[di],al
        add di,2
        cmp bx,2
        ja t
        cmp bx,2
        jb d
        mov byte ptr es:[di],' '
        add di,2
        ret        
d:        
        mov byte ptr es:[di],'/'
        add di,2
        ret
t:
        cmp bx,5
        jnb ok
        mov byte ptr es:[di],':'
        add di,2
ok:        
        ret
        
code ends
end start
as555as
[第1楼]   [ 回复时间:2009-10-15 13:57 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:8
注册日期:2009-09-27 23:31
如果我描述的不够清楚可以考到本机上运行试下` 连续运行两边,第二遍就会出现没有等待输入的情况!
as555as
[第2楼]   [ 回复时间:2009-10-16 21:53 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:8
注册日期:2009-09-27 23:31
此贴由 贴主 于 [ 2009-10-16 21:53 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved