成都创新互联网站制作重庆分公司

go语言时钟代码 go语言定时器

用汇编语言编写一个时钟程序,能显示时分秒的,还要有秒表就是计时器的功能,

STACK1 SEGMENT STACK

创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目网站建设、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元坪山做网站,已为上家服务,为坪山各地企业和个人服务,联系电话:18980820575

DW 200 DUP (?)

STACK1 ENDS

DATA SEGMENT

SPACE DB 1000 DUP (' ')

PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ')

DB 6 DUP (' '),0BAH,26 DUP (20H),0BAH,6 DUP (' ')

DB 6 DUP (' '),0C8H,26 DUP (0CDH),0BCH,6 DUP (' ')

DBUFFER DB 8 DUP (':'),12 DUP (' ')

DBUFFER1 DB 20 DUP (' ')

STR1 DB 0DH,0AH, 'PLEASE INPUT DATE(D) OR TIME(T) OR QUIT(Q): $'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK1

START: MOV AX,0001H ;设置显示方式为40*25彩色文本方式

INT 10H

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV BP,OFFSET SPACE

MOV DX,0B00H

MOV CX,1000

MOV BX,0040H

MOV AX,1300H

INT 10H

MOV BP,OFFSET PATTERN ;显示矩形条

MOV DX,0B00H

MOV CX,120

MOV BX,004EH

MOV AX,1301H

INT 10H

LEA DX,STR1 ;显示提示信息

MOV AH,9

INT 21H

MOV AH,1 ;从键盘输入单个字符

INT 21H

CMP AL,44H ;AL='D'?

JNE A

CALL DATE ;显示系统日期

A: CMP AL,54H ;AL='T'?

JNE B

CALL TIME ;显示系统时间

B: CMP AL,51H ;AL='Q'?

JNE START

MOV AH,4CH ;返回dos状态

INT 21H

DATE PROC NEAR ;显示日期子程序

dis:MOV AH,2AH ;取日期

INT 21H

MOV SI,0

MOV AX,CX

MOV BX,100

DIV BL

MOV BL,AH

CALL BCDASC1 ;日期数值转换成相应的ASCII码字符

MOV AL,BL

CALL BCDASC1

INC SI

MOV AL,DH

CALL BCDASC1

INC SI

MOV AL,DL

CALL BCDASC1

MOV BP,OFFSET DBUFFER1

MOV DX,0C0DH

MOV CX,20

MOV BX,004EH

MOV AX,1301H

INT 10H

MOV AH,02H ;设置光标位置

MOV DX,0300H

MOV BH,0

INT 10H

MOV BX,0018H

REPEA: MOV CX,0FFFFH ;延时

REPEAT:LOOP REPEAT

DEC BX

JNZ REPEA

MOV AH,01H ;读键盘缓冲区字符到AL寄存器

INT 16H

JE dis

JMP START

MOV AX,4C00H

INT 21H

RET

DATE ENDP

TIME PROC NEAR ;显示时间子程序

DISPLAY1:MOV SI,0

MOV BX,100

DIV BL

MOV AH,2CH ;取时间

INT 21H

MOV AL,CH

CALL BCDASC ;将时间数值转换成ASCII码字符

INC SI

MOV AL,CL

CALL BCDASC

INC SI

MOV AL,DH

CALL BCDASC

MOV BP,OFFSET DBUFFER

MOV DX,0C0DH

MOV CX,20

MOV BX,004EH

MOV AX,1301H

INT 10H

MOV AH,02H

MOV DX,0300H

MOV BH,0

INT 10H

MOV BX,0018H

RE: MOV CX,0FFFFH

REA: LOOP REA

DEC BX

JNZ RE

MOV AH,01H

INT 16H

JE DISPLAY1

JMP START

MOV AX,4C00H

INT 21H

RET

TIME ENDP

BCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序

PUSH BX

CBW

MOV BL,10

DIV BL

ADD AL,'0'

MOV DBUFFER[SI],AL

INC SI

ADD AH,'0'

MOV DBUFFER[SI],AH

INC SI

POP BX

RET

BCDASC ENDP

BCDASC1 PROC NEAR ;日期数值转换成ASCII码字符子程序

PUSH BX

CBW

MOV BL,10

DIV BL

ADD AL,'0'

MOV DBUFFER1[SI],AL

INC SI

ADD AH,'0'

MOV DBUFFER1[SI],AH

INC SI

POP BX

RET

BCDASC1 ENDP

CODE ENDS

END START

cursor equ 45H

attrib equ 2fh

code segment

assume cs:code,ds:code

start:

jmp go

oldcur dw ?

OLD1C DW 2 DUP(?)

NEWINT1C:

PUSHF

CALL DWORD PTR CS:OLD1C

push ax

PUSH BX

PUSH CX

PUSH DX

XOR BH,BH

MOV AH,3

INT 10H

MOV CS:OLDCUR,DX

MOV AH,2

xor bh,bh

MOV DX,CURSOR

INT 10H

MOV AH,2 ;读取系统时钟

INT 1AH

PUSH DX

PUSH CX

POP BX

PUSH BX

CALL SHOWBYTE

CALL SHOWCOLON

POP BX

XCHG BH,BL

CALL SHOWBYTE

CALL SHOWCOLON

POP BX

CALL SHOWBYTE

MOV DX,CS:OLDCUR

MOV AH,2

XOR BH,BH

INT 10H

POP DX

POP CX

POP BX

POP AX

IRET

SHOWBYTE PROC NEAR

PUSH BX

MOV CL,4

MOV AL,BH

SHR AL,CL

ADD AL,30H

CALL SHOW

CALL CURMOVE

POP BX

MOV AL,BH

AND AL,0FH

ADD AL,30H

CALL SHOW

CALL CURMOVE

RET

SHOWBYTE ENDP

SHOWCOLON PROC NEAR

MOV AL,':'

CALL SHOW

CALL CURMOVE

RET

SHOWCOLON ENDP

CURMOVE PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV AH,3

MOV BH,0

INT 10H

INC DL

MOV AH,2

INT 10H

POP DX

POP CX

POP BX

POP AX

RET

CURMOVE ENDP

SHOW PROC NEAR

PUSH AX

PUSH BX

PUSH CX

MOV AH,09H

MOV BX,attrib

MOV CX,1

INT 10H

POP CX

POP BX

POP AX

RET

SHOW ENDP

GO:

PUSH CS

POP DS

MOV AX,351CH ;取中断向量

INT 21H

MOV OLD1C,BX;保存原中断向量

MOV BX,ES

MOV OLD1C+2,BX

MOV DX,OFFSET NEWINT1C ;置新的中断向量

MOV AX,251CH

INT 21H

MOV DX,OFFSET GO

SUB DX,OFFSET START

MOV CL,4

SHR DX,CL

ADD DX,11H

MOV AX,3100H ;结束并驻留

INT 21H

CODE ENDS

END START

Go语言基础语法(一)

本文介绍一些Go语言的基础语法。

先来看一个简单的go语言代码:

go语言的注释方法:

代码执行结果:

下面来进一步介绍go的基础语法。

go语言中格式化输出可以使用 fmt 和 log 这两个标准库,

常用方法:

示例代码:

执行结果:

更多格式化方法可以访问中的fmt包。

log包实现了简单的日志服务,也提供了一些格式化输出的方法。

执行结果:

下面来介绍一下go的数据类型

下表列出了go语言的数据类型:

int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值。

常量是在程序编译时就确定下来的值,程序运行时无法改变。

执行结果:

执行结果:

Go 语言的运算符主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及指针相关运算符。

算术运算符:

关系运算符:

逻辑运算符:

位运算符:

赋值运算符:

指针相关运算符:

下面介绍一下go语言中的if语句和switch语句。另外还有一种控制语句叫select语句,通常与通道联用,这里不做介绍。

if语法格式如下:

if ... else :

else if:

示例代码:

语法格式:

另外,添加 fallthrough 会强制执行后面的 case 语句,不管下一条case语句是否为true。

示例代码:

执行结果:

下面介绍几种循环语句:

执行结果:

执行结果:

也可以通过标记退出循环:

--THE END--

为什么go语言时间格式化这么变态

是说 20060102150405 这个吗,原因大致如下:

可读性高,所见即所得

实现简单,排除二义性(15或3代表时,4代表分,5代表秒,06或2006代表年)

请参考源代码:

187 case '3':

188 return layout[0:i], stdHour12, layout[i+1:]

189

190 case '4':

191 return layout[0:i], stdMinute, layout[i+1:]

192

193 case '5':

194 return layout[0:i], stdSecond, layout[i+1:]

195

要个简单一点的小时钟代码~

这个是文字时钟代码:

script

var dayarray=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")

var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December")

function getthedate(){

var mydate=new Date()

var year=mydate.getYear()

if (year 1000)

year+=1900

var day=mydate.getDay()

var month=mydate.getMonth()

var daym=mydate.getDate()

if (daym10)

daym="0"+daym

var hours=mydate.getHours()

var minutes=mydate.getMinutes()

var seconds=mydate.getSeconds()

var dn="AM"

if (hours=12)

dn="PM"

if (hours12){

hours=hours-12

}

if (hours==0)

hours=12

if (minutes=9)

minutes="0"+minutes

if (seconds=9)

seconds="0"+seconds

//change font size here

var cdate="smallfont color='000000' face='Arial'b"+dayarray[day]+", "+montharray[month]+" "+daym+", "+year+" "+hours+":"+minutes+":"+seconds+" "+dn

+"/b/font/small"

if (document.all)

document.all.clock.innerHTML=cdate

else

document.write(cdate)

}

if (!document.all)

getthedate()

function goforit(){

if (document.all)

setInterval("getthedate()",1000)

}

/script

body onload="goforit()"

span id="clock"/span


分享标题:go语言时钟代码 go语言定时器
文章路径:http://cxhlcq.com/article/dodigdd.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部