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