fps.asm
comment *
MASM32 SDK
ml /c /AT /Fl fps.asm
link16 /t fps;
*
		.186
		.model	tiny
 
CR		equ	0dh
 
STDOUT		equ	1
 
		.code
		org	0100h
 
main		proc
		mov	ah, 12h			; カーソル表示off
		int	18h
@@loop:
		mov	ah, 00h			; 日付・時刻の読み出し
		mov	bx, offset clock
		int	1ch			; カレンダ時計のBIOS
 
		mov	al, [clock + 5]
		cmp	al, sec
		je	@@skip
		mov	sec, al
		mov	dx, count
		mov	fps, dx
		mov	count, 0
@@skip:
		mov	di, offset secbuf
		call	itoa2
		mov	si, offset secbuf
		call	puts
 
		mov	ax, fps
		call	printd
		mov	si, offset fpsstr
		call	puts
 
		inc	count
		mov	ax, count
		call	printd
		mov	ah, 02h
		mov	dl, CR
		int	21h
		jmp	@@loop
main		endp
 
itoa2		proc
		cld
		mov	cx, 2
@@loop:
		rol	al, 4
		push	ax
		and	al, 0fh
		cmp	al, 0ah
		sbb	al, 69h
		das
		stosb
		pop	ax
		loop	@@loop
		ret
itoa2		endp
 
puts		proc
		cld
		mov	ah, 02h
@@loop:
		lodsb
		cmp	al, 0
		je	@@exit
		mov	dl, al
		int	21h
		jmp	@@loop
@@exit:
		ret
puts		endp
 
printd		proc
		mov	bx, numbuf_end
		mov	cx, 10
@@loop:
		mov	dx, 0
		div	cx
		add	dl, '0'
		dec	bx
		mov	[bx], dl
		cmp	ax, 0
		jne	@@loop
 
		mov	ah, 40h			; ファイル/デバイスの書き込み
		mov	dx, bx
		mov	cx, numbuf_end		; 書き込むバイト数
		sub	cx, bx
		mov	bx, STDOUT
		int	21h
		ret
printd		endp
 
numbuf		db	5 dup (?)
numbuf_end	equ	$
 
clock		db	6 dup (?)
sec		db	0
fps		dw	0
count		dw	0
secbuf		db	'99s ', 0
fpsstr		db	'fps ', 0
 
		end	main
 

最終更新:2018年08月20日 17:50
添付ファイル