|
主题 : : 达人请告知实现屏幕显示暂停的代码 [待解决] |
回复[ 16次 ]
点击[ 472次 ] | |
|
|
|
|
|
[帖 主]
[ 发表时间:2007-11-03 16:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12 |
| 比如现在我要显示"Asm",然后暂停,输入任意键后再退出,不要黑框一闪而过. | | |
|
|
|
|
|
[第1楼]
[ 回复时间:2007-11-03 21:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
显示"Asm",
然后暂停,
/ mov ah,0
|
输入任意键----就是等待键盘输入的代码呀----就是读键盘缓冲区的代码呀 <
|
\ int 16h
后再退出
int 16h 涉及 中断调用 的相关内容,在《汇编语言》第 12 章 ---- 第 17 章 有这些机制的介绍。 | | |
|
|
|
|
|
[第2楼]
[ 回复时间:2007-11-03 22:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12 |
好像是:
mov ah,1
int 21h
???????????? | | |
|
|
|
|
|
[第3楼]
[ 回复时间:2007-11-04 09:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:102
信誉值:0
注册日期:2007-06-26 15:10 |
|
|
|
|
|
|
[第4楼]
[ 回复时间:2007-11-04 11:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:32
信誉值:0
注册日期:2007-07-14 19:06 |
mov ah,0
int 16h
int 16h中断例程的0号功能是从键盘缓冲区中读取一个键盘输入,ah中存放的扫描码,al中存放的是ASCII码,可以通过返回值的判断来决定是否让程序结束,否则,一直显示字符,读取键盘缓冲区的内容,直到你输入的键值是你程序实现程序结束的键值,这时程序才会结束。 | | |
|
|
|
|
|
[第5楼]
[ 回复时间:2007-11-04 16:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18 |
mov ah,1
int 21h
回复:[第3楼]
------------------
这个也可以的. | | |
|
|
|
|
|
[第6楼]
[ 回复时间:2007-11-04 22:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12 |
回复:[第5楼]
------------------
这两种方法有区别么,请问? | | |
|
|
|
|
|
[第7楼]
[ 回复时间:2007-11-04 22:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:19
信誉值:0
注册日期:2007-07-05 17:25 |
int 16h中断例程是由BIOS提供的,该功能是读取键盘缓冲区并返回该按键的ASCII码及其扫描码。在键盘缓冲区
为空的时候该中断一直处于等待状态。相当于C语言里的getch();
int 21h中断例程是由DOS提供的,该功能是读取键盘缓冲区并返回该按键的ASCII码及其扫描码并同时在屏幕上
显示出来。在键盘缓冲区为空的时候该中断一直处于等待状态。相当于C语言里的getche(); | | |
|
|
|
|
|
[第8楼]
[ 回复时间:2007-11-05 09:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:102
信誉值:0
注册日期:2007-06-26 15:10 |
|
|
|
|
|
|
[第9楼]
[ 回复时间:2007-11-05 12:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12 |
|
|
|
|
|
|
[第10楼]
[ 回复时间:2007-11-05 18:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:19
信誉值:0
注册日期:2007-07-05 17:25 |
可以,那你就自己编一个读60H端口的,当你输入某个字符是退出。这样你没有读取键盘缓冲区,如果你输入多个字符没有你输入的字符,这些之前输入的字符会存在键盘缓冲区。如果你下面有读键盘缓冲区的代码,就会可能造成影响。代码只是个说明。
input:
in al,60h
cmp al,02h
je exit
jmp input
exit:
mov ax,4c00h
int 21h | | |
|
|
|
|
|
[第11楼]
[ 回复时间:2007-11-05 22:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12 |
|
|
|
|
|
|
[第12楼]
[ 回复时间:2007-11-05 23:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
| 是,可以根据需要,改变cmp al,02h中的操作数2。 | | |
|
|
|
|
|
[第13楼]
[ 回复时间:2007-12-25 15:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:117
信誉值:2
注册日期:2007-09-04 10:41 |
|
|
|
|
|
|
[第14楼]
[ 回复时间:2007-12-29 09:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
|
|
|
|
|
|
[第15楼]
[ 回复时间:2010-02-05 00:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:5
注册日期:2009-03-25 17:31 |
|
|
|
|
|
|
[第16楼]
[ 回复时间:2010-03-07 20:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-03-07 20:09 |
;调用BIOS 第16H功能
mov ah, 0 ;等待读取键盘的缓冲区数据
int 16H | | |