汇编语言子函数——延时函数

在汇编语言中,延时子函数用的也较多,在这里同样要编写一个子函数

CPU在执行语句的时候也是需要耗时的,只是CPU运行速度太快,我们没办法看清楚,所以如果CPU执行语句越多,所需要的时间就越多,根据这个原理,就可以通过让CPU随便执行语句,起到延时的效果,这被称为“软件延时”,CPU执行一条指令耗时近似1us,就可以通过这种办法加上循环就可以实现延时效果

这里可以用一个大数字减法和循环的办法来实现延时

任务:编写一个函数,在屏幕中显示一个可以看清的a~z

代码:

assume cs:code

code segment

	start:								mov ax, 0B800H
										mov ds, ax
										
										mov al, 'a'
								s:		mov ds:[10*160 + 8*2], al
										mov byte ptr ds:[10*160 + 8*2 + 1], 2
										
										call delay                                    ;调用延时的子程序,方便显示
										
										cmp al, 'z'
										je s0
										inc al
										jmp s
										
								s0:		mov al, 'a'
										jmp s
										
								send:	mov ax, 4C00H
										int 21H
										
						delay:			push dx
										push ax
										
										mov dx, 10H
										mov ax, 0
								s1:		sub ax, 1                                     ;-1的反码是65535
										sbb dx, 0                                     ;此时CF寄存器是1,则dx-1
										cmp ax, 0                                     ;内循环
										jne s1
										cmp dx, 0                                     ;外循环   
										jne s1
										
										pop ax
										pop dx
										ret
										
code ends		
end start

这里用到了一个嵌套循环将减法分为高位和低位来做减法,直到高位为零且低位为零为止

运行结果:



做不了动画,就截取两种不同时间下显示的字符

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值