请问怎样实现在屏幕输出时任按一键使其停止?
请问怎样实现在屏幕输出时任按一键使其停止? 问题点数:0、回复次数:5Top
1 楼csdsjkk()回复于 2003-11-02 16:43:04 得分 0
不用编程,
试试按 <ctrl s>Top
2 楼pwb()回复于 2003-11-02 16:46:30 得分 0
但这是题目的要求Top
3 楼bluedreammer(瀟瀟鳥)回复于 2003-11-03 09:17:54 得分 0
循環的時候不停詢問鍵盤緩衝區有沒有定義退出的某鍵摁下,就可以實現阿
不過cpu的效率很低.Top
4 楼rorot(rorot)回复于 2003-11-03 10:58:46 得分 0
;---------------------------------------------
.model small
.data
msg db 'This is a example',13,10,'$'
.code
.386
a10main proc near
mov ax, @data
mov ds, ax
call c10clear ;清屏
mov dx, 080fh ;设置光标点
call c20cursor ;请求光标
lea dx, msg ;给dx,msg的地址
call d10display ;显示msg
call a20auto ;检测键盘状态来显示
a40: mov ax, 4c00h ;结束程序运行
int 21h
a10main endp
;---------------------------------------------
a20auto proc near
pusha ;积存器压入堆栈
auto:
call d10display
mov ah, 0bh ;调用int 21h的0Bh来检测键盘缓冲区按键
int 21h
cmp al, 00h ;AL的返回是00H,则表示没有按键
je auto ;继续执行循环操作
quit:
mov ah, 0ch ;调用int 21h的0Ch来清空键盘缓冲区
int 21h
popa ;积存器弹出堆栈
ret
a20auto endp
;---------------------------------------------
c10clear proc near
pusha ;保存通用积存器
mov ax, 0600h ;请求全屏滚屏
mov bh, 30 ;背景色
mov cx, 0000h ;左上角
mov dx, 184fh ;右下角
int 10h
popa ;释放通用积存器
ret
c10clear endp
;---------------------------------------------
c20cursor proc near
push ax
push bx
mov ah, 02h ;请求设置光标
mov bh, 00h ;第0页
int 10h
pop bx
pop ax
ret
c20cursor endp
;---------------------------------------------
d10display proc near
push ax
mov ah, 09h ;请求显示
int 21h
pop ax
ret
d10display endp
;---------------------------------------------
end a10main
Top
5 楼phicy(小小)回复于 2003-11-03 11:09:34 得分 0
我觉得采用中断的方法不是很好,有点浪费内存。Top




