来自于《Intel汇编语言程序设计》(第四版)第11章----------32位windows编程。
程序内容为,每经过100毫秒就在屏幕上显示一个点,当大于5000毫秒时退出。
代码如下:
TITLE Calculate Elapsed Time ( TimingLoop.asm )
; This program uses GetTickCount to calculate the number
; of milliseconds that have elapsed since the program
; started.
INCLUDE Irvine32.inc
TIME_LIMIT = 5000
.data
startTime DWORD ?
dot BYTE ".",0
.code
main PROC
INVOKE GetTickCount ; get milliseconds
mov startTime , eax
L1: mov edx , OFFSET dot ; display a dot
call WriteString
INVOKE Sleep , 100 ; sleep for 100ms
INVOKE GetTickCount
sub eax , startTime ; check the elapsed time
cmp eax , TIME_LIMIT
jb L1
L2: exit
main ENDP
END main
程序里用到了两个新函数:GetTickCount 和 Sleep。
GetTickCount 函数原型如下:
GetTickCount PROTO ; 返回值在EAX中
GetTickCount 用来返回系统启动以来所经过的毫秒数,因为计数值是一个双字,所以系统连续运行49.7天之后,计数值将归0.
Sleep 函数原型如下:
Sleep PROTO,
dwMilliseconds : DWORD
用来暂停参数指定的毫秒数。
注释一下程序:
TITLE Calculate Elapsed Time ( TimingLoop.asm )
; This program uses GetTickCount to calculate the number
; of milliseconds that have elapsed since the program
; started.
INCLUDE Irvine32.inc
TIME_LIMIT = 5000 ; 设定了截止时间5000毫秒
.data
startTime DWORD ?
dot BYTE ".",0
.code
main PROC
INVOKE GetTickCount ; 调用GetTickCount 得到程序开始的时间(系统启动以来的时间),保存在eax中
mov startTime , eax ; 将现在的时间保存在变量中
L1: mov edx , OFFSET dot ; display a dot
call WriteString
INVOKE Sleep , 100 ; 间隔100毫秒
INVOKE GetTickCount ; 再次得到现在的时间
sub eax , startTime ; 减去程序开始时的时间
cmp eax , TIME_LIMIT ; 看是否大于截止时间
jb L1 ; 如果小于则继续执行
L2: exit
main ENDP
END main
代码完。
分享到:
相关推荐
《汇编语言课程设计案例精编》源代码,案例1判断闰年程序、案例2产生随机数并运算的程序、案例3计算平台长度程序、案例4加减乘除四则运算 、案例4加减乘除四则运算 、案例4加减乘除四则运算 、案例7代码转换程序...
会到keil c51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑, 容易理解。在开发大型软件时更能体现高级语言的优势。 Keil C51 可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人 员可用IDE...
51单片机基础应用设计C语言实例(400例)合集: 10-LED循环左移 100-24c02记忆开机次数 101-24c02存储上次使用中状态 102-DS1302 时钟原理 103-DS1302可调时钟 ...214-红外遥控键值解码12864液晶显示(汇编语言)
1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言...
接上电复位电路,以及手动复位电路,分析复位工作原理 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机 I/O 输出 将一发光二极管 LED 的正极(阳极)接 P1.1,LED 的负极(阴极)接地 GND。只要 P1.1 输出...
如果用汇编语言编程就用.ASM后缀,因为课设要求用C语言编程所以后缀选择led.c。 保存好文件后点击ADD将led.c文件添加进Test工程中。如此便可开始编程了。如需生产HEX文件,则右键点击Target 1,选择options for ...
主要学习51定时器汇编语言编写中断功能,和如何编写中断服务程序。P8纵向连接上面2个。 10-music2 -- 用C语言中断演奏。主要学习在C语言中定义51内部定时器中断服务程序。P8纵向连接上面2个。 11-disp1234 -- 采用...
我们使用汇编语言来 编写程序,采用模块化程序设计方法,主程序有多个子程序构成,这些子程序可以单独 的设计,调试和管理,其中包括加1子程序、减1子程序、延时子程序、快加子程序,复 位子程序和显示子程序等。...
3.6 第一个汇编语言工程:控制小灯闪烁 117 3.6.1 汇编工程文件的组织 118 3.6.2 Light构件汇编程序 122 3.6.3 Light测试工程主程序 124 3.6.4 理解第一个汇编工程的执行过程 126 第4章 基于硬件构件的嵌入式...
0003 如何定制代码编辑器 3 0004 保存自定义开发环境桌面 4 1.2 组件安装 4 0005 安装ActiveX组件 4 0006 安装不同类型的第三方组件 5 0007 在Delphi中加载QReport报表组件 7 1.3 创建DLL文件 8 0008...
0003 如何定制代码编辑器 3 0004 保存自定义开发环境桌面 4 1.2 组件安装 4 0005 安装ActiveX组件 4 0006 安装不同类型的第三方组件 5 0007 在Delphi中加载QReport报表组件 7 1.3 创建DLL文件 8 0008...
提供器和探测器 ................................................................................................................................. 27 编译和检测过程 ........................................