. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->自由讨论区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  达人请告知实现屏幕显示暂停的代码  [待解决] 回复[ 16次 ]   点击[ 472次 ]  
s11ss
[帖 主]   [ 发表时间:2007-11-03 16:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12
比如现在我要显示"Asm",然后暂停,输入任意键后再退出,不要黑框一闪而过.
Wednesday
[第1楼]   [ 回复时间:2007-11-03 21:40 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
显示"Asm",
然后暂停,
                                                                                                                                     /  mov ah,0
                                                                                                                                     |
输入任意键----就是等待键盘输入的代码呀----就是读键盘缓冲区的代码呀   <
                                                                                                                                     |
                                                                                                                                     \  int 16h


后再退出

int 16h 涉及 中断调用 的相关内容,在《汇编语言》第 12 章 ---- 第 17 章 有这些机制的介绍。
s11ss
[第2楼]   [ 回复时间:2007-11-03 22:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12
好像是:
mov ah,1
int 21h

????????????
sunshine
[第3楼]   [ 回复时间:2007-11-04 09:42 ]   [引用]   [回复]   [ top ] 
荣誉值:102
信誉值:0
注册日期:2007-06-26 15:10
黑框一闪而过?
happy
[第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码,可以通过返回值的判断来决定是否让程序结束,否则,一直显示字符,读取键盘缓冲区的内容,直到你输入的键值是你程序实现程序结束的键值,这时程序才会结束。
cxn
[第5楼]   [ 回复时间:2007-11-04 16:01 ]   [引用]   [回复]   [ top ] 
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18
mov ah,1 
int 21h 
回复:[第3楼]
------------------
这个也可以的.
s11ss
[第6楼]   [ 回复时间:2007-11-04 22:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12
回复:[第5楼]
------------------
这两种方法有区别么,请问?
zysong
[第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();
sunshine
[第8楼]   [ 回复时间:2007-11-05 09:06 ]   [引用]   [回复]   [ top ] 
荣誉值:102
信誉值:0
注册日期:2007-06-26 15:10
学习了
s11ss
[第9楼]   [ 回复时间:2007-11-05 12:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12
知道了.能不能不用中断例程呢?
zysong
[第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
s11ss
[第11楼]   [ 回复时间:2007-11-05 22:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-11-03 16:12
这个例子中是输入1后退出么?
Wednesday
[第12楼]   [ 回复时间:2007-11-05 23:35 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
是,可以根据需要,改变cmp al,02h中的操作数2。
huibian
[第13楼]   [ 回复时间:2007-12-25 15:47 ]   [引用]   [回复]   [ top ] 
荣誉值:117
信誉值:2
注册日期:2007-09-04 10:41
跟c语言的getch()一样~
mouse
[第14楼]   [ 回复时间:2007-12-29 09:22 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
mov ah,0 
    int 16h 

键盘服务(Keyboard Service——INT 16H) --当个函数用就行了~
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=4526&kindLevel=1&kindId=7003&postId=8011&readSg=1
sinawear
[第15楼]   [ 回复时间:2010-02-05 00:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:5
注册日期:2009-03-25 17:31
825354呀
huer0625
[第16楼]   [ 回复时间:2010-03-07 20:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-07 20:09
;调用BIOS 第16H功能
mov ah, 0  ;等待读取键盘的缓冲区数据
int 16H
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2010   ASMEDU.NET  All Rights Reserved