在屏幕上输出字符串“welcome to asm”,要求逐个字符输出,每隔约0.5秒左右(可以有0.05秒内的误差)输出一个字符
DATAS SEGMENT
;此处输入数据段代码
str1 db 'welcome to asm',0dh,0ah,'$' ;0DH,0AH为回车,换行的ascii码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
N1MS = 325 ;建立延时1ms系数循环次数技术,325是定时常数,经验值
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov cx,14 ;一共有14个数
xor bx,bx ;bx清零
lea dx,str1 ;将str1的地址给dx
call print ;打印输出
MOV AH,4CH
INT 21H
print proc
A1:
mov dl,[str1+bx] ;将str中字符串的内容加载到dl中
mov ah,02h ;输出
int 21h
inc bx ;切换下一个字符
push cx
push dx
mov al,1 ;延时一个0.5s
call timelate;调用延时的子程序
pop dx
pop cx
loop A1
ret
print endp
;延时0.5s子程序
timelate proc
S0:
mov cx,500 ;内循环延时约1ms,外循环500次,则内循环一轮为0.5s
S1:
mov dx,N1MS ;建立延时1ms系数循环计数次数
S2:
dec dx ;第一层循环 1ms
jnz S2
dec cx ;第二层循环 0.5s
jnz S1
dec al
jnz S0
ret
timelate endp
CODES ENDS
END START