matlab语言系统时间,汇编语言实例:显示系统时间

MS-Windows 提供了设置屏幕光标位置和获取系统时间的控制台函数。要使用这些函数,先为两个预先定义的结构 COORD 和 SYSTEMTIME 创建实例:

COORD STRUCT

X WORD ?

Y WORD ?

COORD ENDS

SYSTEMTIME STRUCT

wYear WORD ?

wMonth WORD ?

wDayOfWeek WORD ?

wDay WORD ?

wHour WORD ?

wMinute WORD ?

wSecond WORD ?

wMilliseconds WORD ?

SYSTEMTIME ENDS

这两个结构都在 SmallWin.inc 中进行了定义,这个文件位于汇编器的 INCLUDE 目录下,并且由 Irvine32.inc 引用。首先获取系统时间(调整本地时间),调用 MS-Windows 的 GetLocalTime 函数,并向其传递 SYSTEMTIME 结构的地址:

.data

sysTime SYSTEMTIME <>

.code

INVOKE GetLocalTime, ADDR sysTime

接着,从 SYSTEMTIME 结构检索相应的数值:

movzx eax,sysTime.wYear

call WriteDec

当 Win32 程序产生屏幕输出时,它要调用 MS-Windows GetStdHandle 函数来检索标准控制台输出句柄(一个整数):

.data

consoleHandle DWORD ?

.code

INVOKE GetStdHandle, STD_OUTPUT_HANDLE

mov consoleHandle,eax

设置光标位置要调用 MS-Windows SetConsoleCursorPosition 函数,并向其传递控制台输岀句柄,以及包含 X、Y 字符坐标的 COORD 结构变量:

.data

XYPos COORD <10,5>

.code

INVOKE SetConsoleCursorPosition, consoleHandle, XYPos

程序清单

下面的程序检索系统时间,并将其显示在指定的屏幕位置。该程序只在保护模式下运行:

; 结构 (ShowTime.asm)

INCLUDE Irvine32.inc

.data

sysTime SYSTEMTIME <>

XYPos COORD <10,5>

consoleHandle DWORD ?

colonStr BYTE ":",0

.code

main PROC

; 获取 Win32 控制台的标准输出句柄

INVOKE GetStdHandle, STD_OUTPUT_HANDLE

mov consoleHandle,eax

; 设置光标位置并获取系统时间

INVOKE SetConsoleCursorPosition, consoleHandle, XYPos

INVOKE GetLocalTime,ADDR sysTime

; 显示系统时间 (hh:mm:ss).

movzx eax,sysTime.wHour ; 小时

call WriteDec

mov edx,offset colonStr ; ":"

call WriteString

movzx eax,sysTime.wMinute ; 分钟

call WriteDec

call WriteString ; ":"

movzx eax,sysTime.wSecond ; 秒

call WriteDec

call Crlf

exit

main ENDP

END main

SmallWin.inc(自动包含在 Irvine32.inc 中)中的上述程序采用如下定义:

STD_OUTPUT_HANDLE EQU -11

SYSTEMTIME STRUCT ...

COORD STRUCT ...

GetStdHandle PROTO,

nStdHandle:DWORD

GetLocalTime PROTO,

lpSystemTime:PTR SYSTEMTIME

SetConsoleCursorPosition PROTO,

nStdHandle:DWORD,

coords:COORD

下面是示例程序输出,执行时间为下午 12:16:

12:16:35

Press any key to continue...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值