1. 用户可以在唱歌过程中可以键入 P 暂停唱歌
2. 暂停后,输出提示信息,让用户键入 Y/N 确定退出
在实现第一个功能的时候,我先是用int 16h 的 01h功能判断是否有键入,无效! 后来想到了直接去读60h端口,不知是不是程序写错了,问题未得到解决。
(我找了很多资料还是么找到确切的解决方法。希望大虾门帮帮忙!谢谢!:)
3 个解决方案
#1
应该可以用int 16h的吧,你看:
code segment
assume cs:code
start:
mov ah,0
int 16h
cmp al,'p'
jnz exit
mov dl,al
mov ah,2
int 21h
exit:
mov ax,4c00h
int 21h
code ends
end start
code segment
assume cs:code
start:
mov ah,0
int 16h
cmp al,'p'
jnz exit
mov dl,al
mov ah,2
int 21h
exit:
mov ax,4c00h
int 21h
code ends
end start
#2
你这样改一下:
mov ah,0
int 16h ;判断有无按键
cmp al,0 ; 你自己查一下返回什么值是无按键,我这里先假设0就是无按键je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al
mov ah,0
int 16h ;判断有无按键
cmp al,0 ; 你自己查一下返回什么值是无按键,我这里先假设0就是无按键je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al
#3
刚没注意把2行合并了(这是在1楼的基础上改的)
mov ah,0
int 16h ;判断有无按键
cmp al,0 ;你自己查一下返回什么值是无按键,我这里先假设0就是无按键
je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al
mov ah,0
int 16h ;判断有无按键
cmp al,0 ;你自己查一下返回什么值是无按键,我这里先假设0就是无按键
je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al
#1
应该可以用int 16h的吧,你看:
code segment
assume cs:code
start:
mov ah,0
int 16h
cmp al,'p'
jnz exit
mov dl,al
mov ah,2
int 21h
exit:
mov ax,4c00h
int 21h
code ends
end start
code segment
assume cs:code
start:
mov ah,0
int 16h
cmp al,'p'
jnz exit
mov dl,al
mov ah,2
int 21h
exit:
mov ax,4c00h
int 21h
code ends
end start
#2
你这样改一下:
mov ah,0
int 16h ;判断有无按键
cmp al,0 ; 你自己查一下返回什么值是无按键,我这里先假设0就是无按键je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al
mov ah,0
int 16h ;判断有无按键
cmp al,0 ; 你自己查一下返回什么值是无按键,我这里先假设0就是无按键je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al
#3
刚没注意把2行合并了(这是在1楼的基础上改的)
mov ah,0
int 16h ;判断有无按键
cmp al,0 ;你自己查一下返回什么值是无按键,我这里先假设0就是无按键
je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al
mov ah,0
int 16h ;判断有无按键
cmp al,0 ;你自己查一下返回什么值是无按键,我这里先假设0就是无按键
je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit
mov dl,al