
(注意,字符串应该以$结束),代码如下:
MOV DX,OFFSET CONTENT
MOV AH,9
INT 21H
2。然后调用延时子程序延时5s,我的延时不一定精确,只是象征性的延时,你可以戚局根据延时时间具册悄体计算,很容易的,延时子程序在DELAY,你只需改变州仔渣BX,CX的值即可改变延时时间
3.最后用中断16H的1号中断服务程序判断是否有按键按下,若有键盘按下,该功能置ZF = 0,否则 ZF = 1,代码如下:
MOV AH,01H
INT 16H
4.判断ZF是否为1 ,为1 ,证明无按键按下,跳转A1继续输出字符串,否则结束程序
以上就是我的程序的思路,是不是很简单啊,具体程序如下,如果有什么问题可以继续问,一定为你解答!
DATA SEGMENT
CONTENT DB 'Good morning ','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
A1:
MOV DX,OFFSET CONTENT
MOV AH,9
INT 21H
CALL DELAY
MOV AH,01H
INT 16H
JZ A1
MOV AH,4CH
INT 21H
DELAY PROC NEAR
MOV BX,25000
A2:MOV CX,20000
LOOP $
DEC BX
JNZ A2
RET
DELAY ENDP
CODE ENDS
END START
CODE SEGMENTASSUME CS:CODE
START:
MOV CX,3 设外循环 3次
@0:
PUSH CX
MOV CX,10 设内循环 10次
@1:
MOV AH,2
MOV DX,CX
DEC DX 将内循环变量 减一 后输出
OR DL,30H
神纯指 INT 21H
MOV AX,18 延时 18 个单位 ,约等于1秒
CALL DELAY_PROC
LOOP @1
CALL LFCR 换行回车
POP CX
LOOP @0
MOV AH,4CH
INT 21H
LFCR: PUSH AX
PUSH DX
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
POP DX
POP AX
游配 RET
===============================================================
DELAY_PROC PROC 裤好NEAR 延迟子程式, 延迟 ax/18秒
PUSH ES
PUSH DX
MOV DX,40H
MOV ES,DX
MOV DX,ES:[006CH] 取系统1/18秒计数
ADD DX,AX 延时 x/18
DELAY10:
CMP ES:[006CH],DX 时限到了?
JBE DELAY10 没
POP DX
POP ES
RET
DELAY_PROC ENDP
============================================================
CODE ENDS
END START
对Sleep()函数不太了解漏棚橡,查了一下,此函数好像是静返旁态类型,只执行一次。对此程序,可和橘自己写一个延时函数,希望下面的代码对你有所帮助。#include <iostream>
#include <ctime>
using namespace std
void delay( int sec ) // 延时sec秒
{
time_t start_time, cur_time
time( &start_time )
do {
time( &cur_time )
} while(( cur_time - start_time ) <sec )
}
void main()
{
char a[]={"一个一个出现!"}
for(int i=0i<14i++)
{
cout<<a[i]
delay(1)
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)