汇编语言延时程序怎么解释?

汇编语言延时程序怎么解释?,第1张

编码程序的一种变式。

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

程序在不同主频下延时不一样,但这里面一谨段定是个比例关系。打个比方,你的代码是在和晌旅主频为1GHz下的延时,这个参数你延时是5S。但换到2GHZ下,程序不改动的话,延时是2.5秒。

在汇编代码中获取到当前的主频,那么就可以做成自适应的效果,自动按比例改变延时程序内部的计数量。

若是高级语言,比如VS,就能用GetTickCount()来精确延时5s了。其实只要能读出当前时间的精确值,比如直接读BIOS时间,那么就能实现比较精确的5s延时了。不同的CPU在读精确时间的函数上是一样的。

    ORG 0000H           再试试

      MOV   SP,#60H     栈起点设置为60H

      MOV   7AH,#01H

      MOV   7BH,#02H

      MOV   7CH,#03H

      MOV   7DH,#04H      复位状态字型枣袭卜码送缓凳穗冲区

LooP: ACALL  DIS       

      LCALL  DAY

      SJMP 禅升LooP

    ------------显示子程序----------------

      4共阴极LED,P0控制段,P2控制位

DIS:  MOV DPTR,#TAB

DIS1: MOV R0,#7AH

      MOV R1,#0feH    反向驱动位选择初值

      MOV R2,#04H

DIS2: MOV A,@R0

      MOVC A,@A+DPTR

      ORL P2,#0FH              消隐

      MOV P0,A

      MOV A,R1

      MOV P2,A

      LCALL  DAY      1ms   

      INC  R0

      RL  A

      MOV R1,A

      DJNZ R2,DIS2

      RET

TAB:  DB  03FH,06H,05BH,4FH,66H,6DH,7DH,07H   

      DB  7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,40H

 ------------1ms延时子程序----------------

DAY:  MOV R6,#1

D1:   MOV R7,#248

D2:   NOP

      NOP

      DJNZ R7, D2

      DJNZ R6, D1

      RET

      END

1、首先在电脑中打开Masm for Windows 集成实验环境。

2、接着输入DATAS SEGMENT定义数据段,BUF0 DB 1定义一个字节型变量,名称是BUF0,初始值是猛前01H。

3、DATAS SEGMENT定义数据段,BUF2 DW 1定义一个字型变量,名称是BUF2,初始值是0001H。缓知闹

4、DATAS SEGMENT定义数据段,BUF4 DB 1 DUP(50)定义连续50个字节型变量,名称是BUF4,初始值是01H,DATAS ENDS;数据段定义结束。

5、最后完整段扰罩的Hello World程序,设置字符串变量DATAS  SEGMENT,就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12500540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存