本文代码来自于《Intel汇编语言程序设计》 (第四版)第11章-----------32位windows编程。
秒表程序使用了一个TimeStart来启动秒表,还有一个TimeStop返回自TimeStart启动以来的毫秒数。
程序本身其实很简单,以下为代码:
TITLE Calculate Elapsed Time
; Demonstrate a simple stopwatch timer, using
; the Win32 GetTickCount function.
INCLUDE Irvine32.inc
TimerStart PROTO,
pSaveTime : PTR DWORD
TimeStop PROTO,
pSaveTime : PTR DWORD
.data
msg BYTE "milliseconds have elapsed" , 0dh , 0ah , 0
timer1 DWORD ?
.code
main PROC
INVOKE TimerStart , ; 开始计时
ADDR timer1 ; 传入一个指向DWORD类型的指针
INVOKE Sleep , 5000 ; 暂停5秒
INVOKE TimerStop, ; 结束计时
ADDR timer1 ; 传入一个指向DWORD类型的指针
call WriteDec ; 打印一共花费的毫秒数
mov edx,OFFSET msg
call WriteString
exit
main ENDP
;----------------------------------------------------------------------------
TimerStart PROC uses eax esi,
pSavedTime : PTR DWORD
; starts a stopwatch timer.
; Receives : pointer to a variable that will hold
; the current time.
; Returns : nothing
;----------------------------------------------------------------------------
INVOKE GetTickCount ; 得到了时间值,保存在eax中
mov esi,pSavedTime ; 得到传入的参数地址
mov [esi],eax ; 将得到的时间值保存在传入的DWORD类型指针所指向的地址中
ret
TimerStart ENDP
;----------------------------------------------------------------------------
TimerStop PROC uses esi,
pSavedTime : PTR DWORD ; 接收一个指向DWORD类型的指针作为参数
; Stops the current stopwatch timer.
; Receives : pointer to a variable holding the saved time
; Returns : EAX = number of elapsed milliseconds
; Remarks : Accurate to about 10ms ; 系统的精确度在XP是10ms
;----------------------------------------------------------------------------
INVOKE GetTickCount ; 又得到了时间,将得到的时间值保存到了eax中
mov esi,pSavedTime ; 将接收到指针赋值到esi中
sub eax,[esi] ; 使用eax的值减去目前[esi]中的值记得到自TimerStart以来的时间差
ret
TimerStop ENDP
END main
注意在main之前,有TimerStart 和TimerStop 两个函数原型的定义,汇编语言和其他语言不同,必须在使用之前定义,这样main中使用到这两个函数时才会知道,否则程序会认为找不到这两个函数。
分享到:
相关推荐
51单片机秒表计时汇编程序代码,这个是之前好奇汇编语言,简单写了个秒表计时器程序,仿真没问题,焊接电路烧录代码也能正常运行,但汇编真的挺难读懂的,比c语言易读性差很多,所以后续也就不再碰汇编代码了。...
单片机汇编语言秒表是一种基于微控制器的计时装置,它利用单片机的内部定时器资源来实现时间的精确测量。在单片机系统中,汇编语言是低级编程语言,用于直接控制硬件操作,因此,用汇编语言编写秒表程序能够高效地...
用汇编语言编写数字秒表 以下是根据给定的文件信息生成的知识点: 一、汇编语言基本概念 ...用汇编语言编写数字秒表需要了解微机原理、电子文档的格式、8253 定时器、8259 中断控制器、显示电路和延时子程序等概念。
而“www.pudn.com.txt”可能是指向更多资源或讨论的链接,有助于扩展对汇编语言秒表编程的理解。 汇编语言编写电子秒表程序需要深入理解计算机硬件和操作系统原理,这不仅锻炼了编程技巧,也对提升系统级编程能力...
根据给定的信息,本文将详细解释“一个秒表的汇编语言程序”的核心知识点,包括程序的基本结构、定时器的工作原理及其配置方法等。 ### 一、程序基本结构 汇编语言程序通常由一系列指令组成,这些指令可以是跳转...
程序代码通常包含了实现特定功能的算法和结构,对于初学者来说,通过阅读和分析这些代码,可以学习到如何在实际项目中运用汇编语言来控制硬件资源,如显示、输入和中断处理。 数字秒表的实现通常涉及到以下关键知识...
提供的压缩包文件"51秒表"可能包含了实现上述步骤的原理图和源代码。原理图展示了电路连接,包括单片机、定时器、中断引脚、显示设备等组件的布局。源代码则包含具体的C语言实现,可以通过编译和烧录到51单片机中,...
汇编计时器秒表的设计 本实验的主要目的是为了学习中断的原理和设置中断向量,进一步加深对中断处理程序的理解,并掌握中断的分类、中断向量的设置和中断处理程序的设计。此外,还将学习使用8253/8254定时器实现...
1. **源代码**:文件可能包含了汇编语言编写的秒表程序的完整源代码,包括定义计时器中断、更新显示、启动和停止计时等关键部分。 2. **设计和工作原理**:文档可能解释了秒表程序的设计思路,如如何利用CPU的...
【标题】中的“秒表程序-protues+汇编源序程”指的是一个结合了Protues仿真软件和汇编语言编程的项目,旨在创建一个功能完善的秒表应用。Protues是一款流行的虚拟原型设计工具,主要用于电子电路的仿真,它允许用户...
在本项目中,汇编语言被用来编写控制单片机内部时钟和计数器的代码,以实现精确的时间计算和显示。 **单片机**是整个系统的硬件核心,它集成了CPU、内存、定时器/计数器等部件。在时钟和秒表的设计中,单片机的...
### 电子秒表汇编程序知识...综上所述,这个程序通过巧妙地利用8254和8255等外设芯片,结合汇编语言的精确控制能力,实现了电子秒表的基本功能。对于学习和理解基于硬件的实时系统设计而言,这是一个非常有价值的实例。
本项目以“基于51单片机的数字秒表汇编程序”为主题,通过ASM文件,配合详细的结题报告,揭示了如何利用汇编语言来实现一个实用的数字秒表功能。 首先,51单片机的数字秒表设计主要涉及到硬件接口和软件编程两个...
在计算机科学领域,汇编语言作为一种古老而又强大的编程语言,它与计算机硬件紧密相关,是深入学习计算机底层原理和系统设计不可或缺的部分。钱忠民先生的著作《汇编语言》为那些希望探索计算机底层世界的初学者提供...
生产实习计划书数字秒表实现与设计 源程序代码
9. **VC++与汇编语言的混合编程**:探索高级语言与汇编语言的结合,学会在C++程序中嵌入汇编代码,实现性能优化。 10. **综合性实验**:综合运用所学知识,完成一个或多个具有实际意义的项目,全面提升编程技能与...
本资源是一个基于汇编语言的秒表程序设计报告,用于唐都仪器上,旨在实现高精度的计时功能。该设计报告包括了课程设计报告、设计思想、设计所用芯片及工作原理、系统接线图、程序流程图、程序源代码和设计心得等方面...
5. **SEC_METER.asm** - 秒表程序:涉及到时间的计数和显示,可能使用了单片机内部的定时器功能,有助于理解定时器的工作机制。 6. **DS1302.asm** - 实时时钟程序:DS1302是一款常见的实时时钟芯片,该程序展示了...
从给定的文件信息来看,这是一段使用8086微处理器的汇编语言代码,旨在实现一个电子秒表的功能。这段代码包含了秒表的基本操作,如计时、显示时间、以及通过输入中断来控制秒表的启动与暂停。下面,我们将详细解析这...
《基于51单片机的数字秒表汇编程序(双键版)》是一个简易的电子计时器项目,主要用于教学或实验环境,它通过51系列单片机实现数字秒表的功能,采用汇编语言编写,具备双键操作模式。尽管这个版本的功能相比完整版有所...