用80x86汇编语言 编写一个数字电子时钟!高手求助!

qq_23524649 2016-11-17 04:11:03
数字电子时钟
设计内容要求:设计一数字电子时钟,能够实现时间的校准,秒表,闹钟等功能。
大学狗课程设计 一点头绪也没有额、、、、、、
...全文
688 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-18
  • 打赏
  • 举报
回复
百度搜“汇编源代码 数字时钟”
赵4老师 2016-11-18
  • 打赏
  • 举报
回复
仅供参考:
.model	small
.code
dot8x11 db	11*11 dup('8x11.dot')
oldint1ch	dd	?
count	db	0
dark	db	?
bright	db	?
clkstr	db	'hh:mm:ss',0
oldnumofwin	dw	?
granularity	dw	?
xoff	=	0
yoff	=	0
numofwin    =	    0	    ;((yoff*640+xoff)>>16)*(64/granularity)
addr    =       0       ;(yoff*640+xoff)&0x0000ffffL
;--------------------------------------------------------
getcolor:
	xor	ax,ax
	mov	si,ax	;max r+g+b
	mov	bl,al	;bl=color
	mov	cx,ax	;ch=bright cl=dark
	dec	ax
	mov	di,ax	;min r+g+b
	xor	ah,ah
$gc1:
	xor	bp,bp
	mov	dx,3c7h
	mov	al,bl
	out	dx,al	;color
	mov	dx,3c9h
	in	al,dx	;r
	add	bp,ax
	in	al,dx	;g
	add	bp,ax
	in	al,dx	;b
	add	bp,ax
	cmp	bp,si	;r+g+b > max r+g+b
	jb	$gc2
	mov	si,bp
	mov	ch,bl
	jmp	$nextcolor
$gc2:
	cmp	bp,di	;r+g+b < min r+g+b
	jae	$nextcolor
	mov	di,bp
	mov	cl,bl
$nextcolor:
	inc	bl
	cmp	bl,0
	je	$gcend
	jmp	$gc1
$gcend:
	mov	bright,ch
	mov	dark,cl
	retn
;--------------------------------------------------------
getclkstr:
	mov	ah,2
	int	1ah
	mov	al,dh	;ss
	and	al,0fh
	or	al,'0'
	mov	clkstr[7],al
	mov	al,dh
	shr	al,1
	shr	al,1
	shr	al,1
	shr	al,1
	or	al,'0'
	mov	clkstr[6],al
	mov	al,cl	;mm
	and	al,0fh
	or	al,'0'
	mov	clkstr[4],al
	mov	al,cl
	shr	al,1
	shr	al,1
	shr	al,1
	shr	al,1
	or	al,'0'
	mov	clkstr[3],al
	mov	al,ch	;hh
	and	al,0fh
	or	al,'0'
	mov	clkstr[1],al
	mov	al,ch
	shr	al,1
	shr	al,1
	shr	al,1
	shr	al,1
	or	al,'0'
	mov	clkstr[0],al
	retn
;--------------------------------------------------------
showclkstr:
	lea	si,clkstr
	mov	dx,-1
$shnext:
	inc	dx		;char count
	lodsb
	cmp	al,0
	je	$shend
	sub	al,'0'
	mov	bl,8*11
	mul	bl
	mov	bx,ax		;offset of dot
	mov	di,addr
	mov	ax,dx
	shl	ax,1
	shl	ax,1
	shl	ax,1
	add	di,ax		;addr+char_count*8
	mov	cx,11
$shchar:
	push	cx
	mov	cx,8
$shline:
	mov	al,dot8x11[bx]
	cmp	al,1
	jne	$sh0
	mov	al,bright
	jmp	$sh2
$sh0:
	mov	al,dark
$sh2:
	stosb
	inc	bx
	loop	$shline

	add	di,640-8
	pop	cx
	loop	$shchar

	jmp	$shnext
$shend:
	retn
;--------------------------------------------------------
getnumofwin:
	mov	ax,4f05h
	mov	bx,100h
	int	10h
	retn
;--------------------------------------------------------
setnumofwin:
	mov	ax,4f05h
	mov	bx,0
	int	10h
	retn
;--------------------------------------------------------
main:
	mov	ax,4f03h
	int	10h
	cmp	ax,004fh
	jne	$mend		;not VESA
	cmp	bx,101h
	jne	$mend		;not 640x480x256 mode
	push	cs
	pop	ds
	call	getcolor
	call	getclkstr

	call	getnumofwin
	mov	oldnumofwin,dx

	mov	dx,numofwin
	call	setnumofwin

	mov	ax,0a000h
	mov	es,ax		;video buffer seg
	call	showclkstr

	mov	dx,oldnumofwin
	call	setnumofwin
$mend:
	retn
;--------------------------------------------------------
int1ch:
	cmp	cs:count,18
	je	$into
	inc	cs:count
	jmp	cs:oldint1ch
$into:
	mov	cs:count,0
	push	ax
	push	bx
	push	cx
	push	dx
	push	si
	push	di
	push	ds
	push	es
	push	bp
	call	main
	pop	bp
	pop	es
	pop	ds
	pop	di
	pop	si
	pop	dx
	pop	cx
	pop	bx
	pop	ax
	jmp	cs:oldint1ch
;--------------------------------------------------------
	db	'Copyright ZZ Inc.'
buf	dw	128 dup(?)
start:
	mov	ax,4f01h
	push	cs
	pop	es
	push	cs
	pop	ds
	lea	di,buf
	mov	cx,101h
	int	10h
	mov	bx,buf[4]
	mov	granularity,bx

	mov	ax,351ch
	int	21h
	mov	word ptr cs:oldint1ch,bx
	mov	word ptr cs:oldint1ch+2,es
	mov	ax,251ch
	push	cs
	pop	ds
	lea	dx,int1ch
	int	21h

	lea	dx,start
	add	dx,110h
	shr	dx,1
	shr	dx,1
	shr	dx,1
	shr	dx,1
	mov	ax,3100h
	int	21h
;--------------------------------------------------------
	end	start

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧