美文网首页
【MASM】延时

【MASM】延时

作者: 焜_8899 | 来源:发表于2020-06-20 06:05 被阅读0次

1. 代码格式

1.1 方法一

通过反复跳转实现延时。

MOV 寄存器, 跳转次数
跳转位置:
    DEC 寄存器
    JNZ 跳转位置

当跳转次数较大时,可以体现出延时的效果。要使得效果更明显,即使得延时时间更长,可以嵌套一层跳转。

MOV 寄存器1, 跳转次数1
跳转位置1:
    MOV 寄存器2, 跳转次数2
跳转位置2:
        DEC 寄存器2
        JNZ 跳转位置2
    DEC 寄存器1
    JNZ 跳转位置1

1.2 方法二

使用LOOP实现延时。

MOV CX, 循环次数
循环区间: LOOP 循环区间

1.3 方法三

调用BIOS系统功能实现延时。

MOV AH, 86H
MOV AL, 0
MOV CX, “时间”(详见2.3.2)
MOV DX, “时间”(详见2.3.2)
INT 15H

2. 解释说明

2.1 关于方法一

这种方法比较基础,貌似也比较常用。但不清楚如何确定延时的具体时间。

2.2 关于方法二

使用LOOP前,需要将循环次数存入CX寄存器中。
此方法与方法一相比使用起来较为简单,但同样不清楚如何确定延时的具体时间。

2.3 关于方法三

与方法一、二相比,此方法代码量稍大一点。但好处在于可以确定延时的具体时间。

2.3.1 功能调用

当需要进行指定时长延时的时候,可以调用BIOS系统功能,即INT 15H。在这之前,需要通过为AH寄存器赋值以指定调用对应的功能。其中,86h号功能便是延时。

2.3.2 时间参数计算方法

  1. 时间的单位为微秒(1μs = 10^-6s)
  2. 计算以微妙为单位的时长的十六进制数(例:10s = 10,000,000μs,10,000,000 = 0x 98 9680)
  3. 将十六进制数的高四位存入CX,低四位存入DX(例:10s => “MOV CX, 98HMOV DX, 9680H”)

2.3.3 补充说明

  • 参考文献[1]中,在举例说明时,是通过在数的前面加0x来表示十六进制数。然而,在MASM中,是通过在数的后面加h来表示十六进制数。
  • 根据参考文献[2],建议在写延时程序的时候加上一句MOV AL, 0(方法三第二行),不然可能出现意料之外的不稳定行为。

3. 参考文献

[1] 车子 chezi. x86汇编如何延时[EB/OL]. (2017-04-12)[2020-06-20]. https://blog.csdn.net/u013490896/article/details/70149027?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase.
[2] Stack Overflow. Problems with BIOS delay function (INT 15h / AH = 86h)[EB/OL]. (2015-12-04)[2020-06-20]. https://stackoverflow.com/questions/34089884/problems-with-bios-delay-function-int-15h-ah-86h?r=SearchResults.

相关文章

  • 【MASM】延时

    1. 代码格式 1.1 方法一 通过反复跳转实现延时。 当跳转次数较大时,可以体现出延时的效果。要使得效果更明显,...

  • Win10 + MASM32 + EditPlus 汇编语言编程

    下载安装MASM32汇编环境 官方下载站:MASM32 环境变量配置 配置MasmHome变量,值为masm32的...

  • MAC OS环境下搭建DOSBOX汇编环境(转)

    工具: DOSBox(点击下载DOSBox官网) debug、edit、link、masm等等(点击下载masm汇...

  • 汇编之旅启程Mac下DOSBox汇编环境

    工具 DOSBox(点击下载:DOSBox官网) debug、edit、link、masm等 (masm汇编开发工...

  • mac下汇编环境的搭建

    需要使用的工具 1、dosbox软件 2、masm5,其中包括了很多的工具,link,debug,masm等 这些...

  • 汇编环境搭建 -- Visual Studio

    1. 创建空项目 2. 生成MASM规则 项目右键 -> 生成自定义 -> 勾选masm选项 3. 添加源文件 选...

  • MASM初探

    X86处理器主要有四种操作模式: 保护模式 虚拟8086模式 实地址模式 系统管理模式 一、保护模式:保护模式是C...

  • 第2章 准备编程环境

    win32可执行程序的开发过程 编译器和链接器 MASM编译器 http://www.masm32.com/[ht...

  • win10系统使用vsc进行汇编

    简述在win10 环境下搭建汇编环境,使用vsc+MASM/TASM 1.下载一个vsc 2.安装插件MASM/T...

  • 关于本文集的说明

    汇编语言根据CPU的架构可以分为不同的指令集,例如MIPS和MASM。本文集目前所有的内容都是关于MASM(Mic...

网友评论

      本文标题:【MASM】延时

      本文链接:https://www.haomeiwen.com/subject/ayzixktx.html