|
主题 : : in 指令的问题` [已解决] |
回复[ 2次 ]
点击[ 389次 ] | |
荣誉值: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 | | |